diff --git a/.vscode/settings.json b/.vscode/settings.json index dc200f79..17293413 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,16 +1,3 @@ { - "rust-analyzer.assist.importMergeBehavior": "last", "editor.formatOnSave": true, - "rust-analyzer.cargo.allFeatures": false, - "rust-analyzer.checkOnSave.allFeatures": false, - "rust-analyzer.checkOnSave.allTargets": false, - "rust-analyzer.cargo.target": "thumbv7em-none-eabihf", - "rust-analyzer.checkOnSave.target": "thumbv7em-none-eabihf", - "rust-analyzer.procMacro.enable": true, - "rust-analyzer.cargo.loadOutDirsFromCheck": true, - "files.watcherExclude": { - "**/.git/objects/**": true, - "**/.git/subtree-cache/**": true, - "**/target/**": true - } } \ No newline at end of file diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml index 245b0ffc..a53cf9c4 100644 --- a/embassy-stm32/Cargo.toml +++ b/embassy-stm32/Cargo.toml @@ -15,7 +15,6 @@ cortex-m-rt = { version = "0.6.13", features = ["device"] } cortex-m = "0.7.1" embedded-hal = { version = "0.2.4" } futures = { version = "0.3.5", default-features = false, features = ["async-await"] } -stm32-metapac = { path = "../../stm32-metapac"} [build-dependencies] regex = "1.4.6" @@ -32,294 +31,294 @@ _usart_v1 = [] _rng_v1 = [] # BEGIN GENERATED FEATURES -stm32f401cb = [ "_syscfg_f4", "_usart_v1",] -stm32f401cc = [ "_syscfg_f4", "_usart_v1",] -stm32f401cd = [ "_syscfg_f4", "_usart_v1",] -stm32f401ce = [ "_syscfg_f4", "_usart_v1",] -stm32f401rb = [ "_syscfg_f4", "_usart_v1",] -stm32f401rc = [ "_syscfg_f4", "_usart_v1",] -stm32f401rd = [ "_syscfg_f4", "_usart_v1",] -stm32f401re = [ "_syscfg_f4", "_usart_v1",] -stm32f401vb = [ "_syscfg_f4", "_usart_v1",] -stm32f401vc = [ "_syscfg_f4", "_usart_v1",] -stm32f401vd = [ "_syscfg_f4", "_usart_v1",] -stm32f401ve = [ "_syscfg_f4", "_usart_v1",] -stm32f405oe = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f405og = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f405rg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f405vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f405zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407ie = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407ve = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407ze = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f407zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410c8 = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410cb = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410r8 = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410rb = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410t8 = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f410tb = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f411cc = [ "_syscfg_f4", "_usart_v1",] -stm32f411ce = [ "_syscfg_f4", "_usart_v1",] -stm32f411rc = [ "_syscfg_f4", "_usart_v1",] -stm32f411re = [ "_syscfg_f4", "_usart_v1",] -stm32f411vc = [ "_syscfg_f4", "_usart_v1",] -stm32f411ve = [ "_syscfg_f4", "_usart_v1",] -stm32f412ce = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412cg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412re = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412rg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412ve = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412ze = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f412zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413cg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413ch = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413mg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413mh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413rg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413rh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413vh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f413zh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f415og = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f415rg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f415vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f415zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417ie = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417ve = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417ze = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f417zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f423ch = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f423mh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f423rh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f423vh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f423zh = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427ag = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f427zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ag = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429be = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429bg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429bi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ie = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ne = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ng = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ni = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ve = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429ze = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f429zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f437zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439bg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439bi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439ng = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439ni = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f439zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f446mc = [ "_syscfg_f4", "_usart_v1",] -stm32f446me = [ "_syscfg_f4", "_usart_v1",] -stm32f446rc = [ "_syscfg_f4", "_usart_v1",] -stm32f446re = [ "_syscfg_f4", "_usart_v1",] -stm32f446vc = [ "_syscfg_f4", "_usart_v1",] -stm32f446ve = [ "_syscfg_f4", "_usart_v1",] -stm32f446zc = [ "_syscfg_f4", "_usart_v1",] -stm32f446ze = [ "_syscfg_f4", "_usart_v1",] -stm32f469ae = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ag = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469be = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469bg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469bi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ie = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ne = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ng = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ni = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ve = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469ze = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f469zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ag = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ai = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479bg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479bi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ig = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ii = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ng = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479ni = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479vg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479vi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479zg = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32f479zi = [ "_syscfg_f4", "_rng_v1", "_usart_v1",] -stm32l412c8 = [ "_rng_v1", "_syscfg_l4",] -stm32l412cb = [ "_rng_v1", "_syscfg_l4",] -stm32l412k8 = [ "_rng_v1", "_syscfg_l4",] -stm32l412kb = [ "_rng_v1", "_syscfg_l4",] -stm32l412r8 = [ "_rng_v1", "_syscfg_l4",] -stm32l412rb = [ "_rng_v1", "_syscfg_l4",] -stm32l412t8 = [ "_rng_v1", "_syscfg_l4",] -stm32l412tb = [ "_rng_v1", "_syscfg_l4",] -stm32l422cb = [ "_rng_v1", "_syscfg_l4",] -stm32l422kb = [ "_rng_v1", "_syscfg_l4",] -stm32l422rb = [ "_rng_v1", "_syscfg_l4",] -stm32l422tb = [ "_rng_v1", "_syscfg_l4",] -stm32l431cb = [ "_rng_v1", "_syscfg_l4",] -stm32l431cc = [ "_rng_v1", "_syscfg_l4",] -stm32l431kb = [ "_rng_v1", "_syscfg_l4",] -stm32l431kc = [ "_rng_v1", "_syscfg_l4",] -stm32l431rb = [ "_rng_v1", "_syscfg_l4",] -stm32l431rc = [ "_rng_v1", "_syscfg_l4",] -stm32l431vc = [ "_rng_v1", "_syscfg_l4",] -stm32l432kb = [ "_rng_v1", "_syscfg_l4",] -stm32l432kc = [ "_rng_v1", "_syscfg_l4",] -stm32l433cb = [ "_rng_v1", "_syscfg_l4",] -stm32l433cc = [ "_rng_v1", "_syscfg_l4",] -stm32l433rb = [ "_rng_v1", "_syscfg_l4",] -stm32l433rc = [ "_rng_v1", "_syscfg_l4",] -stm32l433vc = [ "_rng_v1", "_syscfg_l4",] -stm32l442kc = [ "_rng_v1", "_syscfg_l4",] -stm32l443cc = [ "_rng_v1", "_syscfg_l4",] -stm32l443rc = [ "_rng_v1", "_syscfg_l4",] -stm32l443vc = [ "_rng_v1", "_syscfg_l4",] -stm32l451cc = [ "_rng_v1", "_syscfg_l4",] -stm32l451ce = [ "_rng_v1", "_syscfg_l4",] -stm32l451rc = [ "_rng_v1", "_syscfg_l4",] -stm32l451re = [ "_rng_v1", "_syscfg_l4",] -stm32l451vc = [ "_rng_v1", "_syscfg_l4",] -stm32l451ve = [ "_rng_v1", "_syscfg_l4",] -stm32l452cc = [ "_rng_v1", "_syscfg_l4",] -stm32l452ce = [ "_rng_v1", "_syscfg_l4",] -stm32l452rc = [ "_rng_v1", "_syscfg_l4",] -stm32l452re = [ "_rng_v1", "_syscfg_l4",] -stm32l452vc = [ "_rng_v1", "_syscfg_l4",] -stm32l452ve = [ "_rng_v1", "_syscfg_l4",] -stm32l462ce = [ "_rng_v1", "_syscfg_l4",] -stm32l462re = [ "_rng_v1", "_syscfg_l4",] -stm32l462ve = [ "_rng_v1", "_syscfg_l4",] -stm32l471qe = [ "_rng_v1", "_syscfg_l4",] -stm32l471qg = [ "_rng_v1", "_syscfg_l4",] -stm32l471re = [ "_rng_v1", "_syscfg_l4",] -stm32l471rg = [ "_rng_v1", "_syscfg_l4",] -stm32l471ve = [ "_rng_v1", "_syscfg_l4",] -stm32l471vg = [ "_rng_v1", "_syscfg_l4",] -stm32l471ze = [ "_rng_v1", "_syscfg_l4",] -stm32l471zg = [ "_rng_v1", "_syscfg_l4",] -stm32l475rc = [ "_rng_v1", "_syscfg_l4",] -stm32l475re = [ "_rng_v1", "_syscfg_l4",] -stm32l475rg = [ "_rng_v1", "_syscfg_l4",] -stm32l475vc = [ "_rng_v1", "_syscfg_l4",] -stm32l475ve = [ "_rng_v1", "_syscfg_l4",] -stm32l475vg = [ "_rng_v1", "_syscfg_l4",] -stm32l476je = [ "_rng_v1", "_syscfg_l4",] -stm32l476jg = [ "_rng_v1", "_syscfg_l4",] -stm32l476me = [ "_rng_v1", "_syscfg_l4",] -stm32l476mg = [ "_rng_v1", "_syscfg_l4",] -stm32l476qe = [ "_rng_v1", "_syscfg_l4",] -stm32l476qg = [ "_rng_v1", "_syscfg_l4",] -stm32l476rc = [ "_rng_v1", "_syscfg_l4",] -stm32l476re = [ "_rng_v1", "_syscfg_l4",] -stm32l476rg = [ "_rng_v1", "_syscfg_l4",] -stm32l476vc = [ "_rng_v1", "_syscfg_l4",] -stm32l476ve = [ "_rng_v1", "_syscfg_l4",] -stm32l476vg = [ "_rng_v1", "_syscfg_l4",] -stm32l476ze = [ "_rng_v1", "_syscfg_l4",] -stm32l476zg = [ "_rng_v1", "_syscfg_l4",] -stm32l485jc = [ "_rng_v1", "_syscfg_l4",] -stm32l485je = [ "_rng_v1", "_syscfg_l4",] -stm32l486jg = [ "_rng_v1", "_syscfg_l4",] -stm32l486qg = [ "_rng_v1", "_syscfg_l4",] -stm32l486rg = [ "_rng_v1", "_syscfg_l4",] -stm32l486vg = [ "_rng_v1", "_syscfg_l4",] -stm32l486zg = [ "_rng_v1", "_syscfg_l4",] -stm32l496ae = [ "_rng_v1", "_syscfg_l4",] -stm32l496ag = [ "_rng_v1", "_syscfg_l4",] -stm32l496qe = [ "_rng_v1", "_syscfg_l4",] -stm32l496qg = [ "_rng_v1", "_syscfg_l4",] -stm32l496re = [ "_rng_v1", "_syscfg_l4",] -stm32l496rg = [ "_rng_v1", "_syscfg_l4",] -stm32l496ve = [ "_rng_v1", "_syscfg_l4",] -stm32l496vg = [ "_rng_v1", "_syscfg_l4",] -stm32l496wg = [ "_rng_v1", "_syscfg_l4",] -stm32l496ze = [ "_rng_v1", "_syscfg_l4",] -stm32l496zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4a6ag = [ "_rng_v1", "_syscfg_l4",] -stm32l4a6qg = [ "_rng_v1", "_syscfg_l4",] -stm32l4a6rg = [ "_rng_v1", "_syscfg_l4",] -stm32l4a6vg = [ "_rng_v1", "_syscfg_l4",] -stm32l4a6zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5ae = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5ag = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5ce = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5cg = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5qe = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5qg = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5re = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5rg = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5ve = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5vg = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5ze = [ "_rng_v1", "_syscfg_l4",] -stm32l4p5zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5ag = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5cg = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5qg = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5rg = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5vg = [ "_rng_v1", "_syscfg_l4",] -stm32l4q5zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5ag = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5qg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5qi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5vg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r5zi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r7ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4r7vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r7zi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9ag = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9vg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9zg = [ "_rng_v1", "_syscfg_l4",] -stm32l4r9zi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s5ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4s5qi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s5vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s5zi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s7ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4s7vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s7zi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s9ai = [ "_rng_v1", "_syscfg_l4",] -stm32l4s9vi = [ "_rng_v1", "_syscfg_l4",] -stm32l4s9zi = [ "_rng_v1", "_syscfg_l4",] +stm32f401cb = [ "_usart_v1",] +stm32f401cc = [ "_usart_v1",] +stm32f401cd = [ "_usart_v1",] +stm32f401ce = [ "_usart_v1",] +stm32f401rb = [ "_usart_v1",] +stm32f401rc = [ "_usart_v1",] +stm32f401rd = [ "_usart_v1",] +stm32f401re = [ "_usart_v1",] +stm32f401vb = [ "_usart_v1",] +stm32f401vc = [ "_usart_v1",] +stm32f401vd = [ "_usart_v1",] +stm32f401ve = [ "_usart_v1",] +stm32f405oe = [ "_usart_v1",] +stm32f405og = [ "_usart_v1",] +stm32f405rg = [ "_usart_v1",] +stm32f405vg = [ "_usart_v1",] +stm32f405zg = [ "_usart_v1",] +stm32f407ie = [ "_usart_v1",] +stm32f407ig = [ "_usart_v1",] +stm32f407ve = [ "_usart_v1",] +stm32f407vg = [ "_usart_v1",] +stm32f407ze = [ "_usart_v1",] +stm32f407zg = [ "_usart_v1",] +stm32f410c8 = [ "_usart_v1",] +stm32f410cb = [ "_usart_v1",] +stm32f410r8 = [ "_usart_v1",] +stm32f410rb = [ "_usart_v1",] +stm32f410t8 = [ "_usart_v1",] +stm32f410tb = [ "_usart_v1",] +stm32f411cc = [ "_usart_v1",] +stm32f411ce = [ "_usart_v1",] +stm32f411rc = [ "_usart_v1",] +stm32f411re = [ "_usart_v1",] +stm32f411vc = [ "_usart_v1",] +stm32f411ve = [ "_usart_v1",] +stm32f412ce = [ "_usart_v1",] +stm32f412cg = [ "_usart_v1",] +stm32f412re = [ "_usart_v1",] +stm32f412rg = [ "_usart_v1",] +stm32f412ve = [ "_usart_v1",] +stm32f412vg = [ "_usart_v1",] +stm32f412ze = [ "_usart_v1",] +stm32f412zg = [ "_usart_v1",] +stm32f413cg = [ "_usart_v1",] +stm32f413ch = [ "_usart_v1",] +stm32f413mg = [ "_usart_v1",] +stm32f413mh = [ "_usart_v1",] +stm32f413rg = [ "_usart_v1",] +stm32f413rh = [ "_usart_v1",] +stm32f413vg = [ "_usart_v1",] +stm32f413vh = [ "_usart_v1",] +stm32f413zg = [ "_usart_v1",] +stm32f413zh = [ "_usart_v1",] +stm32f415og = [ "_usart_v1",] +stm32f415rg = [ "_usart_v1",] +stm32f415vg = [ "_usart_v1",] +stm32f415zg = [ "_usart_v1",] +stm32f417ie = [ "_usart_v1",] +stm32f417ig = [ "_usart_v1",] +stm32f417ve = [ "_usart_v1",] +stm32f417vg = [ "_usart_v1",] +stm32f417ze = [ "_usart_v1",] +stm32f417zg = [ "_usart_v1",] +stm32f423ch = [ "_usart_v1",] +stm32f423mh = [ "_usart_v1",] +stm32f423rh = [ "_usart_v1",] +stm32f423vh = [ "_usart_v1",] +stm32f423zh = [ "_usart_v1",] +stm32f427ag = [ "_usart_v1",] +stm32f427ai = [ "_usart_v1",] +stm32f427ig = [ "_usart_v1",] +stm32f427ii = [ "_usart_v1",] +stm32f427vg = [ "_usart_v1",] +stm32f427vi = [ "_usart_v1",] +stm32f427zg = [ "_usart_v1",] +stm32f427zi = [ "_usart_v1",] +stm32f429ag = [ "_usart_v1",] +stm32f429ai = [ "_usart_v1",] +stm32f429be = [ "_usart_v1",] +stm32f429bg = [ "_usart_v1",] +stm32f429bi = [ "_usart_v1",] +stm32f429ie = [ "_usart_v1",] +stm32f429ig = [ "_usart_v1",] +stm32f429ii = [ "_usart_v1",] +stm32f429ne = [ "_usart_v1",] +stm32f429ng = [ "_usart_v1",] +stm32f429ni = [ "_usart_v1",] +stm32f429ve = [ "_usart_v1",] +stm32f429vg = [ "_usart_v1",] +stm32f429vi = [ "_usart_v1",] +stm32f429ze = [ "_usart_v1",] +stm32f429zg = [ "_usart_v1",] +stm32f429zi = [ "_usart_v1",] +stm32f437ai = [ "_usart_v1",] +stm32f437ig = [ "_usart_v1",] +stm32f437ii = [ "_usart_v1",] +stm32f437vg = [ "_usart_v1",] +stm32f437vi = [ "_usart_v1",] +stm32f437zg = [ "_usart_v1",] +stm32f437zi = [ "_usart_v1",] +stm32f439ai = [ "_usart_v1",] +stm32f439bg = [ "_usart_v1",] +stm32f439bi = [ "_usart_v1",] +stm32f439ig = [ "_usart_v1",] +stm32f439ii = [ "_usart_v1",] +stm32f439ng = [ "_usart_v1",] +stm32f439ni = [ "_usart_v1",] +stm32f439vg = [ "_usart_v1",] +stm32f439vi = [ "_usart_v1",] +stm32f439zg = [ "_usart_v1",] +stm32f439zi = [ "_usart_v1",] +stm32f446mc = [ "_usart_v1",] +stm32f446me = [ "_usart_v1",] +stm32f446rc = [ "_usart_v1",] +stm32f446re = [ "_usart_v1",] +stm32f446vc = [ "_usart_v1",] +stm32f446ve = [ "_usart_v1",] +stm32f446zc = [ "_usart_v1",] +stm32f446ze = [ "_usart_v1",] +stm32f469ae = [ "_usart_v1",] +stm32f469ag = [ "_usart_v1",] +stm32f469ai = [ "_usart_v1",] +stm32f469be = [ "_usart_v1",] +stm32f469bg = [ "_usart_v1",] +stm32f469bi = [ "_usart_v1",] +stm32f469ie = [ "_usart_v1",] +stm32f469ig = [ "_usart_v1",] +stm32f469ii = [ "_usart_v1",] +stm32f469ne = [ "_usart_v1",] +stm32f469ng = [ "_usart_v1",] +stm32f469ni = [ "_usart_v1",] +stm32f469ve = [ "_usart_v1",] +stm32f469vg = [ "_usart_v1",] +stm32f469vi = [ "_usart_v1",] +stm32f469ze = [ "_usart_v1",] +stm32f469zg = [ "_usart_v1",] +stm32f469zi = [ "_usart_v1",] +stm32f479ag = [ "_usart_v1",] +stm32f479ai = [ "_usart_v1",] +stm32f479bg = [ "_usart_v1",] +stm32f479bi = [ "_usart_v1",] +stm32f479ig = [ "_usart_v1",] +stm32f479ii = [ "_usart_v1",] +stm32f479ng = [ "_usart_v1",] +stm32f479ni = [ "_usart_v1",] +stm32f479vg = [ "_usart_v1",] +stm32f479vi = [ "_usart_v1",] +stm32f479zg = [ "_usart_v1",] +stm32f479zi = [ "_usart_v1",] +stm32l412c8 = [] +stm32l412cb = [] +stm32l412k8 = [] +stm32l412kb = [] +stm32l412r8 = [] +stm32l412rb = [] +stm32l412t8 = [] +stm32l412tb = [] +stm32l422cb = [] +stm32l422kb = [] +stm32l422rb = [] +stm32l422tb = [] +stm32l431cb = [] +stm32l431cc = [] +stm32l431kb = [] +stm32l431kc = [] +stm32l431rb = [] +stm32l431rc = [] +stm32l431vc = [] +stm32l432kb = [] +stm32l432kc = [] +stm32l433cb = [] +stm32l433cc = [] +stm32l433rb = [] +stm32l433rc = [] +stm32l433vc = [] +stm32l442kc = [] +stm32l443cc = [] +stm32l443rc = [] +stm32l443vc = [] +stm32l451cc = [] +stm32l451ce = [] +stm32l451rc = [] +stm32l451re = [] +stm32l451vc = [] +stm32l451ve = [] +stm32l452cc = [] +stm32l452ce = [] +stm32l452rc = [] +stm32l452re = [] +stm32l452vc = [] +stm32l452ve = [] +stm32l462ce = [] +stm32l462re = [] +stm32l462ve = [] +stm32l471qe = [] +stm32l471qg = [] +stm32l471re = [] +stm32l471rg = [] +stm32l471ve = [] +stm32l471vg = [] +stm32l471ze = [] +stm32l471zg = [] +stm32l475rc = [] +stm32l475re = [] +stm32l475rg = [] +stm32l475vc = [] +stm32l475ve = [] +stm32l475vg = [] +stm32l476je = [] +stm32l476jg = [] +stm32l476me = [] +stm32l476mg = [] +stm32l476qe = [] +stm32l476qg = [] +stm32l476rc = [] +stm32l476re = [] +stm32l476rg = [] +stm32l476vc = [] +stm32l476ve = [] +stm32l476vg = [] +stm32l476ze = [] +stm32l476zg = [] +stm32l485jc = [] +stm32l485je = [] +stm32l486jg = [] +stm32l486qg = [] +stm32l486rg = [] +stm32l486vg = [] +stm32l486zg = [] +stm32l496ae = [] +stm32l496ag = [] +stm32l496qe = [] +stm32l496qg = [] +stm32l496re = [] +stm32l496rg = [] +stm32l496ve = [] +stm32l496vg = [] +stm32l496wg = [] +stm32l496ze = [] +stm32l496zg = [] +stm32l4a6ag = [] +stm32l4a6qg = [] +stm32l4a6rg = [] +stm32l4a6vg = [] +stm32l4a6zg = [] +stm32l4p5ae = [] +stm32l4p5ag = [] +stm32l4p5ce = [] +stm32l4p5cg = [] +stm32l4p5qe = [] +stm32l4p5qg = [] +stm32l4p5re = [] +stm32l4p5rg = [] +stm32l4p5ve = [] +stm32l4p5vg = [] +stm32l4p5ze = [] +stm32l4p5zg = [] +stm32l4q5ag = [] +stm32l4q5cg = [] +stm32l4q5qg = [] +stm32l4q5rg = [] +stm32l4q5vg = [] +stm32l4q5zg = [] +stm32l4r5ag = [] +stm32l4r5ai = [] +stm32l4r5qg = [] +stm32l4r5qi = [] +stm32l4r5vg = [] +stm32l4r5vi = [] +stm32l4r5zg = [] +stm32l4r5zi = [] +stm32l4r7ai = [] +stm32l4r7vi = [] +stm32l4r7zi = [] +stm32l4r9ag = [] +stm32l4r9ai = [] +stm32l4r9vg = [] +stm32l4r9vi = [] +stm32l4r9zg = [] +stm32l4r9zi = [] +stm32l4s5ai = [] +stm32l4s5qi = [] +stm32l4s5vi = [] +stm32l4s5zi = [] +stm32l4s7ai = [] +stm32l4s7vi = [] +stm32l4s7zi = [] +stm32l4s9ai = [] +stm32l4s9vi = [] +stm32l4s9zi = [] # END GENERATED FEATURES diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index aacf4648..7a46b3dc 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs @@ -16,7 +16,7 @@ fn main() { let mut device_x = String::new(); - let chip_rs = fs::read_to_string(format!("src/chip/{}.rs", chip)).unwrap(); + let chip_rs = fs::read_to_string(format!("src/pac/{}.rs", chip)).unwrap(); let re = Regex::new("declare!\\(([a-zA-Z0-9_]+)\\)").unwrap(); for c in re.captures_iter(&chip_rs) { let name = c.get(1).unwrap().as_str(); @@ -29,6 +29,6 @@ fn main() { .write_all(device_x.as_bytes()) .unwrap(); println!("cargo:rustc-link-search={}", out.display()); - println!("cargo:rerun-if-changed=src/chip/{}.rs", chip); + println!("cargo:rerun-if-changed=src/pac/{}.rs", chip); println!("cargo:rerun-if-changed=build.rs"); } diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py index c275ff60..b2bc82e4 100644 --- a/embassy-stm32/gen.py +++ b/embassy-stm32/gen.py @@ -17,7 +17,7 @@ for f in sorted(glob('stm32-data/data/chips/*.yaml')): if 'STM32F4' not in f and 'STM32L4' not in f: continue with open(f, 'r') as f: - chip = yaml.load(f, Loader=yaml.SafeLoader) + chip = yaml.load(f, Loader=yaml.CSafeLoader) chip['name'] = chip['name'].lower() chip['features'] = [] print(chip['name']) @@ -28,38 +28,54 @@ gpio_afs = {} for f in sorted(glob('stm32-data/data/gpio_af/*.yaml')): name = f.split('/')[-1].split('.')[0] with open(f, 'r') as f: - af = yaml.load(f, Loader=yaml.SafeLoader) + af = yaml.load(f, Loader=yaml.CSafeLoader) gpio_afs[name] = af -# ========= Update chip/mod.rs +# ========= Generate pac/mod.rs -with open('src/chip/mod.rs', 'w') as f: +with open('src/pac/mod.rs', 'w') as f: for chip in chips.values(): f.write( f'#[cfg_attr(feature="{chip["name"]}", path="{chip["name"]}.rs")]\n') f.write('mod chip;\n') f.write('pub use chip::*;\n') -# ========= Generate per-chip mod +# ========= Generate pac/stm32xxx.rs for chip in chips.values(): print(f'generating {chip["name"]}') - af = gpio_afs[chip['gpio_af']] - peripherals = [] - impls = [] - pins = set() + with open(f'src/pac/{chip["name"]}.rs', 'w') as f: - # TODO this should probably come from the yamls? - # We don't want to hardcode the EXTI peripheral addr - peripherals.extend((f'EXTI{x}' for x in range(16))) + f.write(""" + #![allow(dead_code)] + #![allow(unused_imports)] + #![allow(non_snake_case)] + """) - exti_base = chip['peripherals']['EXTI']['address'] - syscfg_base = chip['peripherals']['SYSCFG']['address'] - gpio_base = chip['peripherals']['GPIOA']['address'] - gpio_stride = 0x400 + af = gpio_afs[chip['gpio_af']] + peripheral_names = [] # USART1, PA5, EXTI8 + peripheral_versions = {} # usart -> v1, syscfg -> f4 + pins = set() # set of all present pins. PA4, PA5... + + # TODO this should probably come from the yamls? + # We don't want to hardcode the EXTI peripheral addr + + gpio_base = chip['peripherals']['GPIOA']['address'] + gpio_stride = 0x400 + f.write(f""" + pub fn GPIO(n: usize) -> gpio::Gpio {{ + gpio::Gpio((0x{gpio_base:x} + 0x{gpio_stride:x}*n) as _) + }} + """) + + # ========= GPIO + + peripheral_names.extend((f'EXTI{x}' for x in range(16))) + + for (name, peri) in chip['peripherals'].items(): + if not name.startswith('GPIO'): + continue - for (name, peri) in chip['peripherals'].items(): - if name.startswith('GPIO'): port = name[4:] port_num = ord(port) - ord('A') @@ -68,68 +84,80 @@ for chip in chips.values(): for pin_num in range(16): pin = f'P{port}{pin_num}' pins.add(pin) - peripherals.append(pin) - impls.append(f'impl_gpio_pin!({pin}, {port_num}, {pin_num}, EXTI{pin_num});') - continue + peripheral_names.append(pin) + f.write(f'impl_gpio_pin!({pin}, {port_num}, {pin_num}, EXTI{pin_num});') - # TODO maybe we should only autogenerate the known ones...?? - peripherals.append(name) + # ========= peripherals - if 'block' not in peri: - continue + for (name, peri) in chip['peripherals'].items(): + if 'block' not in peri: + continue - if peri['block'] in ('usart_v1/USART', 'usart_v1/UART'): - chip['features'].append("_usart_v1") - impls.append(f'impl_usart!({name}, 0x{peri["address"]:x});') - for pin, funcs in af.items(): - if pin in pins: - if func := funcs.get(f'{name}_RX'): - impls.append(f'impl_usart_pin!({name}, RxPin, {pin}, {func});') - if func := funcs.get(f'{name}_TX'): - impls.append(f'impl_usart_pin!({name}, TxPin, {pin}, {func});') - if func := funcs.get(f'{name}_CTS'): - impls.append(f'impl_usart_pin!({name}, CtsPin, {pin}, {func});') - if func := funcs.get(f'{name}_RTS'): - impls.append(f'impl_usart_pin!({name}, RtsPin, {pin}, {func});') - if func := funcs.get(f'{name}_CK'): - impls.append(f'impl_usart_pin!({name}, CkPin, {pin}, {func});') + if not name.startswith('GPIO'): + peripheral_names.append(name) - if peri['block'] == 'rng_v1/RNG': - impls.append(f'impl_rng!(0x{peri["address"]:x});') - chip['features'].append("_rng_v1") + block = peri['block'] + block_mod, block_name = block.rsplit('/') + block_mod, block_version = block_mod.rsplit('_') + block_name = block_name.capitalize() - if peri['block'] == 'syscfg_f4/SYSCFG': - chip['features'].append("_syscfg_f4") + # Check all peripherals have the same version: it's not OK for the same chip to use both usart_v1 and usart_v2 + if old_version := peripheral_versions.get(block_mod): + if old_version != block_version: + raise Exception(f'Peripheral {block_mod} has two versions: {old_version} and {block_version}') + peripheral_versions[block_mod] = block_version - if peri['block'] == 'syscfg_l4/SYSCFG': - chip['features'].append("_syscfg_l4") + f.write(f'pub const {name}: {block_mod}::{block_name} = {block_mod}::{block_name}(0x{peri["address"]:x} as _);') - irq_variants = [] - irq_vectors = [] - irq_fns = [] - irq_declares = [] + if peri['block'] in ('usart_v1/USART', 'usart_v1/UART'): + chip['features'].append("_usart_v1") + f.write(f'impl_usart!({name});') + for pin, funcs in af.items(): + if pin in pins: + if func := funcs.get(f'{name}_RX'): + f.write(f'impl_usart_pin!({name}, RxPin, {pin}, {func});') + if func := funcs.get(f'{name}_TX'): + f.write(f'impl_usart_pin!({name}, TxPin, {pin}, {func});') + if func := funcs.get(f'{name}_CTS'): + f.write(f'impl_usart_pin!({name}, CtsPin, {pin}, {func});') + if func := funcs.get(f'{name}_RTS'): + f.write(f'impl_usart_pin!({name}, RtsPin, {pin}, {func});') + if func := funcs.get(f'{name}_CK'): + f.write(f'impl_usart_pin!({name}, CkPin, {pin}, {func});') - irqs = {num: name for name, num in chip['interrupts'].items()} - irq_count = max(irqs.keys()) + 1 - for num, name in irqs.items(): - irq_variants.append(f'{name} = {num},') - irq_fns.append(f'fn {name}();') - irq_declares.append(f'declare!({name});') - for num in range(irq_count): - if name := irqs.get(num): - irq_vectors.append(f'Vector {{ _handler: {name} }},') - else: - irq_vectors.append(f'Vector {{ _reserved: 0 }},') + if peri['block'] == 'rng_v1/RNG': + f.write(f'impl_rng!({name});') + + for mod, version in peripheral_versions.items(): + f.write(f'pub use regs::{mod}_{version} as {mod};') - with open(f'src/chip/{chip["name"]}.rs', 'w') as f: f.write(f""" + mod regs; + pub use regs::generic; use embassy_extras::peripherals; - peripherals!({','.join(peripherals)}); - pub const SYSCFG_BASE: usize = 0x{syscfg_base:x}; - pub const EXTI_BASE: usize = 0x{exti_base:x}; - pub const GPIO_BASE: usize = 0x{gpio_base:x}; - pub const GPIO_STRIDE: usize = 0x{gpio_stride:x}; + peripherals!({','.join(peripheral_names)}); + """) + # ========= interrupts + + irq_variants = [] + irq_vectors = [] + irq_fns = [] + irq_declares = [] + + irqs = {num: name for name, num in chip['interrupts'].items()} + irq_count = max(irqs.keys()) + 1 + for num, name in irqs.items(): + irq_variants.append(f'{name} = {num},') + irq_fns.append(f'fn {name}();') + irq_declares.append(f'declare!({name});') + for num in range(irq_count): + if name := irqs.get(num): + irq_vectors.append(f'Vector {{ _handler: {name} }},') + else: + irq_vectors.append(f'Vector {{ _reserved: 0 }},') + + f.write(f""" pub mod interrupt {{ pub use cortex_m::interrupt::{{CriticalSection, Mutex}}; pub use embassy::interrupt::{{declare, take, Interrupt}}; @@ -164,9 +192,6 @@ for chip in chips.values(): ]; }} """) - for i in impls: - f.write(i) - # ========= Update Cargo features @@ -184,6 +209,9 @@ cargo = before + SEPARATOR_START + toml.dumps(features) + SEPARATOR_END + after with open('Cargo.toml', 'w') as f: f.write(cargo) +# ========= Generate pac/regs.rs +os.system('cargo run --manifest-path ../../svd2rust/Cargo.toml -- generate --dir stm32-data/data/registers') +os.system('mv lib.rs src/pac/regs.rs') -# format -os.system('rustfmt src/chip/*') +# ========= Update Cargo features +os.system('rustfmt src/pac/*') diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs index 8fd9d91a..375e7782 100644 --- a/embassy-stm32/src/exti.rs +++ b/embassy-stm32/src/exti.rs @@ -13,11 +13,9 @@ use crate::fmt::*; use crate::gpio::{AnyPin, Input, Pin as GpioPin}; use crate::interrupt; use crate::pac; +use crate::pac::{EXTI, SYSCFG}; use crate::peripherals; -const SYSCFG: pac::syscfg::Syscfg = pac::syscfg::Syscfg(crate::chip::SYSCFG_BASE as *mut _); -const EXTI: pac::exti::Exti = pac::exti::Exti(crate::chip::EXTI_BASE as *mut _); - const EXTI_COUNT: usize = 16; const NEW_AW: AtomicWaker = AtomicWaker::new(); static EXTI_WAKERS: [AtomicWaker; EXTI_COUNT] = [NEW_AW; EXTI_COUNT]; diff --git a/embassy-stm32/src/gpio.rs b/embassy-stm32/src/gpio.rs index cbe967f6..43330d9e 100644 --- a/embassy-stm32/src/gpio.rs +++ b/embassy-stm32/src/gpio.rs @@ -3,10 +3,9 @@ use core::marker::PhantomData; use embassy::util::Unborrow; use embassy_extras::{impl_unborrow, unborrow}; use embedded_hal::digital::v2::{InputPin, OutputPin, StatefulOutputPin}; -use gpio::vals; -use crate::chip; -use crate::pac::gpio_v2 as gpio; +use crate::pac; +use crate::pac::gpio::{self, vals}; /// Pull setting for an input. #[derive(Debug, Eq, PartialEq)] @@ -164,9 +163,7 @@ pub(crate) mod sealed { #[inline] fn block(&self) -> gpio::Gpio { - // TODO hardcoding peripheral addrs until we figure out how these are handled in the metapac - let p = chip::GPIO_BASE + (self._port() as usize) * chip::GPIO_STRIDE; - gpio::Gpio(p as *mut u8) + pac::GPIO(self._port() as _) } /// Set the output as high. diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs index 6bdd0c26..122998c9 100644 --- a/embassy-stm32/src/lib.rs +++ b/embassy-stm32/src/lib.rs @@ -10,18 +10,6 @@ pub mod fmt; use embassy::interrupt::{Interrupt, InterruptExt}; -//pub(crate) use stm32_metapac as pac; - -pub(crate) mod pac { - pub use stm32_metapac::*; - - #[cfg(any(feature = "_syscfg_f4"))] - pub use stm32_metapac::syscfg_f4 as syscfg; - - #[cfg(any(feature = "_syscfg_l4"))] - pub use stm32_metapac::syscfg_l4 as syscfg; -} - #[macro_use] pub mod exti; @@ -35,9 +23,12 @@ pub mod usart; pub mod rng; // This must go LAST so that it sees the `impl_foo!` macros -mod chip; -pub use chip::{interrupt, peripherals, Peripherals}; +mod pac; pub use embassy_macros::interrupt; +pub use pac::{interrupt, peripherals, Peripherals}; + +// workaround for svd2rust-generated code using `use crate::generic::*;` +pub(crate) use pac::generic; #[non_exhaustive] pub struct Config { diff --git a/embassy-stm32/src/chip/mod.rs b/embassy-stm32/src/pac/mod.rs similarity index 100% rename from embassy-stm32/src/chip/mod.rs rename to embassy-stm32/src/pac/mod.rs diff --git a/embassy-stm32/src/pac/regs.rs b/embassy-stm32/src/pac/regs.rs new file mode 100644 index 00000000..a31ef04c --- /dev/null +++ b/embassy-stm32/src/pac/regs.rs @@ -0,0 +1,5517 @@ +#![no_std] +#![doc = "Peripheral access API (generated using svd2rust v0.17.0 (507115a 2021-04-19))"] +pub mod gpio_v1 { + use crate::generic::*; + #[doc = "General purpose I/O"] + #[derive(Copy, Clone)] + pub struct Gpio(pub *mut u8); + unsafe impl Send for Gpio {} + unsafe impl Sync for Gpio {} + impl Gpio { + #[doc = "Port configuration register low (GPIOn_CRL)"] + pub fn cr(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) } + } + #[doc = "Port input data register (GPIOn_IDR)"] + pub fn idr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "Port output data register (GPIOn_ODR)"] + pub fn odr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "Port bit set/reset register (GPIOn_BSRR)"] + pub fn bsrr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "Port bit reset register (GPIOn_BRR)"] + pub fn brr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "Port configuration lock register"] + pub fn lckr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(24usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "Port configuration lock register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Lckr(pub u32); + impl Lckr { + #[doc = "Port A Lock bit"] + pub fn lck(&self, n: usize) -> super::vals::Lck { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Lck(val as u8) + } + #[doc = "Port A Lock bit"] + pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + #[doc = "Lock key"] + pub const fn lckk(&self) -> super::vals::Lckk { + let val = (self.0 >> 16usize) & 0x01; + super::vals::Lckk(val as u8) + } + #[doc = "Lock key"] + pub fn set_lckk(&mut self, val: super::vals::Lckk) { + self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize); + } + } + impl Default for Lckr { + fn default() -> Lckr { + Lckr(0) + } + } + #[doc = "Port output data register (GPIOn_ODR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Odr(pub u32); + impl Odr { + #[doc = "Port output data"] + pub fn odr(&self, n: usize) -> super::vals::Odr { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Odr(val as u8) + } + #[doc = "Port output data"] + pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Odr { + fn default() -> Odr { + Odr(0) + } + } + #[doc = "Port bit set/reset register (GPIOn_BSRR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Bsrr(pub u32); + impl Bsrr { + #[doc = "Set bit"] + pub fn bs(&self, n: usize) -> bool { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Set bit"] + pub fn set_bs(&mut self, n: usize, val: bool) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Reset bit"] + pub fn br(&self, n: usize) -> bool { + assert!(n < 16usize); + let offs = 16usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Reset bit"] + pub fn set_br(&mut self, n: usize, val: bool) { + assert!(n < 16usize); + let offs = 16usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Bsrr { + fn default() -> Bsrr { + Bsrr(0) + } + } + #[doc = "Port configuration register (GPIOn_CRx)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr(pub u32); + impl Cr { + #[doc = "Port n mode bits"] + pub fn mode(&self, n: usize) -> super::vals::Mode { + assert!(n < 8usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x03; + super::vals::Mode(val as u8) + } + #[doc = "Port n mode bits"] + pub fn set_mode(&mut self, n: usize, val: super::vals::Mode) { + assert!(n < 8usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + #[doc = "Port n configuration bits"] + pub fn cnf(&self, n: usize) -> super::vals::Cnf { + assert!(n < 8usize); + let offs = 2usize + n * 4usize; + let val = (self.0 >> offs) & 0x03; + super::vals::Cnf(val as u8) + } + #[doc = "Port n configuration bits"] + pub fn set_cnf(&mut self, n: usize, val: super::vals::Cnf) { + assert!(n < 8usize); + let offs = 2usize + n * 4usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + } + impl Default for Cr { + fn default() -> Cr { + Cr(0) + } + } + #[doc = "Port bit reset register (GPIOn_BRR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Brr(pub u32); + impl Brr { + #[doc = "Reset bit"] + pub fn br(&self, n: usize) -> bool { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Reset bit"] + pub fn set_br(&mut self, n: usize, val: bool) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Brr { + fn default() -> Brr { + Brr(0) + } + } + #[doc = "Port input data register (GPIOn_IDR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Idr(pub u32); + impl Idr { + #[doc = "Port input data"] + pub fn idr(&self, n: usize) -> super::vals::Idr { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Idr(val as u8) + } + #[doc = "Port input data"] + pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Idr { + fn default() -> Idr { + Idr(0) + } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Mode(pub u8); + impl Mode { + #[doc = "Input mode (reset state)"] + pub const INPUT: Self = Self(0); + #[doc = "Output mode 10 MHz"] + pub const OUTPUT: Self = Self(0x01); + #[doc = "Output mode 2 MHz"] + pub const OUTPUT2: Self = Self(0x02); + #[doc = "Output mode 50 MHz"] + pub const OUTPUT50: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Odr(pub u8); + impl Odr { + #[doc = "Set output to logic low"] + pub const LOW: Self = Self(0); + #[doc = "Set output to logic high"] + pub const HIGH: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Lckk(pub u8); + impl Lckk { + #[doc = "Port configuration lock key not active"] + pub const NOTACTIVE: Self = Self(0); + #[doc = "Port configuration lock key active"] + pub const ACTIVE: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Brw(pub u8); + impl Brw { + #[doc = "No action on the corresponding ODx bit"] + pub const NOACTION: Self = Self(0); + #[doc = "Reset the ODx bit"] + pub const RESET: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Idr(pub u8); + impl Idr { + #[doc = "Input is logic low"] + pub const LOW: Self = Self(0); + #[doc = "Input is logic high"] + pub const HIGH: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Bsw(pub u8); + impl Bsw { + #[doc = "No action on the corresponding ODx bit"] + pub const NOACTION: Self = Self(0); + #[doc = "Sets the corresponding ODRx bit"] + pub const SET: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Lck(pub u8); + impl Lck { + #[doc = "Port configuration not locked"] + pub const UNLOCKED: Self = Self(0); + #[doc = "Port configuration locked"] + pub const LOCKED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Cnf(pub u8); + impl Cnf { + #[doc = "Analog mode / Push-Pull mode"] + pub const PUSHPULL: Self = Self(0); + #[doc = "Floating input (reset state) / Open Drain-Mode"] + pub const OPENDRAIN: Self = Self(0x01); + #[doc = "Input with pull-up/pull-down / Alternate Function Push-Pull Mode"] + pub const ALTPUSHPULL: Self = Self(0x02); + #[doc = "Alternate Function Open-Drain Mode"] + pub const ALTOPENDRAIN: Self = Self(0x03); + } + } +} +pub mod syscfg_f4 { + use crate::generic::*; + #[doc = "System configuration controller"] + #[derive(Copy, Clone)] + pub struct Syscfg(pub *mut u8); + unsafe impl Send for Syscfg {} + unsafe impl Sync for Syscfg {} + impl Syscfg { + #[doc = "memory remap register"] + pub fn memrm(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "peripheral mode configuration register"] + pub fn pmc(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "external interrupt configuration register"] + pub fn exticr(self, n: usize) -> Reg { + assert!(n < 4usize); + unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) } + } + #[doc = "Compensation cell control register"] + pub fn cmpcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(32usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "peripheral mode configuration register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Pmc(pub u32); + impl Pmc { + #[doc = "ADC1DC2"] + pub const fn adc1dc2(&self) -> bool { + let val = (self.0 >> 16usize) & 0x01; + val != 0 + } + #[doc = "ADC1DC2"] + pub fn set_adc1dc2(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); + } + #[doc = "ADC2DC2"] + pub const fn adc2dc2(&self) -> bool { + let val = (self.0 >> 17usize) & 0x01; + val != 0 + } + #[doc = "ADC2DC2"] + pub fn set_adc2dc2(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize); + } + #[doc = "ADC3DC2"] + pub const fn adc3dc2(&self) -> bool { + let val = (self.0 >> 18usize) & 0x01; + val != 0 + } + #[doc = "ADC3DC2"] + pub fn set_adc3dc2(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize); + } + #[doc = "Ethernet PHY interface selection"] + pub const fn mii_rmii_sel(&self) -> bool { + let val = (self.0 >> 23usize) & 0x01; + val != 0 + } + #[doc = "Ethernet PHY interface selection"] + pub fn set_mii_rmii_sel(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 23usize)) | (((val as u32) & 0x01) << 23usize); + } + } + impl Default for Pmc { + fn default() -> Pmc { + Pmc(0) + } + } + #[doc = "memory remap register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Memrm(pub u32); + impl Memrm { + #[doc = "Memory mapping selection"] + pub const fn mem_mode(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x07; + val as u8 + } + #[doc = "Memory mapping selection"] + pub fn set_mem_mode(&mut self, val: u8) { + self.0 = (self.0 & !(0x07 << 0usize)) | (((val as u32) & 0x07) << 0usize); + } + #[doc = "Flash bank mode selection"] + pub const fn fb_mode(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Flash bank mode selection"] + pub fn set_fb_mode(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "FMC memory mapping swap"] + pub const fn swp_fmc(&self) -> u8 { + let val = (self.0 >> 10usize) & 0x03; + val as u8 + } + #[doc = "FMC memory mapping swap"] + pub fn set_swp_fmc(&mut self, val: u8) { + self.0 = (self.0 & !(0x03 << 10usize)) | (((val as u32) & 0x03) << 10usize); + } + } + impl Default for Memrm { + fn default() -> Memrm { + Memrm(0) + } + } + #[doc = "external interrupt configuration register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Exticr(pub u32); + impl Exticr { + #[doc = "EXTI x configuration"] + pub fn exti(&self, n: usize) -> u8 { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x0f; + val as u8 + } + #[doc = "EXTI x configuration"] + pub fn set_exti(&mut self, n: usize, val: u8) { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs); + } + } + impl Default for Exticr { + fn default() -> Exticr { + Exticr(0) + } + } + #[doc = "Compensation cell control register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cmpcr(pub u32); + impl Cmpcr { + #[doc = "Compensation cell power-down"] + pub const fn cmp_pd(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Compensation cell power-down"] + pub fn set_cmp_pd(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "READY"] + pub const fn ready(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "READY"] + pub fn set_ready(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + } + impl Default for Cmpcr { + fn default() -> Cmpcr { + Cmpcr(0) + } + } + } +} +pub mod generic { + use core::marker::PhantomData; + #[derive(Copy, Clone)] + pub struct RW; + #[derive(Copy, Clone)] + pub struct R; + #[derive(Copy, Clone)] + pub struct W; + mod sealed { + use super::*; + pub trait Access {} + impl Access for R {} + impl Access for W {} + impl Access for RW {} + } + pub trait Access: sealed::Access + Copy {} + impl Access for R {} + impl Access for W {} + impl Access for RW {} + pub trait Read: Access {} + impl Read for RW {} + impl Read for R {} + pub trait Write: Access {} + impl Write for RW {} + impl Write for W {} + #[derive(Copy, Clone)] + pub struct Reg { + ptr: *mut u8, + phantom: PhantomData<*mut (T, A)>, + } + unsafe impl Send for Reg {} + unsafe impl Sync for Reg {} + impl Reg { + pub fn from_ptr(ptr: *mut u8) -> Self { + Self { + ptr, + phantom: PhantomData, + } + } + pub fn ptr(&self) -> *mut T { + self.ptr as _ + } + } + impl Reg { + pub unsafe fn read(&self) -> T { + (self.ptr as *mut T).read_volatile() + } + } + impl Reg { + pub unsafe fn write_value(&self, val: T) { + (self.ptr as *mut T).write_volatile(val) + } + } + impl Reg { + pub unsafe fn write(&self, f: impl FnOnce(&mut T) -> R) -> R { + let mut val = Default::default(); + let res = f(&mut val); + self.write_value(val); + res + } + } + impl Reg { + pub unsafe fn modify(&self, f: impl FnOnce(&mut T) -> R) -> R { + let mut val = self.read(); + let res = f(&mut val); + self.write_value(val); + res + } + } +} +pub mod gpio_v2 { + use crate::generic::*; + #[doc = "General-purpose I/Os"] + #[derive(Copy, Clone)] + pub struct Gpio(pub *mut u8); + unsafe impl Send for Gpio {} + unsafe impl Sync for Gpio {} + impl Gpio { + #[doc = "GPIO port mode register"] + pub fn moder(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "GPIO port output type register"] + pub fn otyper(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "GPIO port output speed register"] + pub fn ospeedr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "GPIO port pull-up/pull-down register"] + pub fn pupdr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "GPIO port input data register"] + pub fn idr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "GPIO port output data register"] + pub fn odr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "GPIO port bit set/reset register"] + pub fn bsrr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(24usize)) } + } + #[doc = "GPIO port configuration lock register"] + pub fn lckr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(28usize)) } + } + #[doc = "GPIO alternate function register (low, high)"] + pub fn afr(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(32usize + n * 4usize)) } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Lck(pub u8); + impl Lck { + #[doc = "Port configuration not locked"] + pub const UNLOCKED: Self = Self(0); + #[doc = "Port configuration locked"] + pub const LOCKED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ot(pub u8); + impl Ot { + #[doc = "Output push-pull (reset state)"] + pub const PUSHPULL: Self = Self(0); + #[doc = "Output open-drain"] + pub const OPENDRAIN: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Pupdr(pub u8); + impl Pupdr { + #[doc = "No pull-up, pull-down"] + pub const FLOATING: Self = Self(0); + #[doc = "Pull-up"] + pub const PULLUP: Self = Self(0x01); + #[doc = "Pull-down"] + pub const PULLDOWN: Self = Self(0x02); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Moder(pub u8); + impl Moder { + #[doc = "Input mode (reset state)"] + pub const INPUT: Self = Self(0); + #[doc = "General purpose output mode"] + pub const OUTPUT: Self = Self(0x01); + #[doc = "Alternate function mode"] + pub const ALTERNATE: Self = Self(0x02); + #[doc = "Analog mode"] + pub const ANALOG: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Odr(pub u8); + impl Odr { + #[doc = "Set output to logic low"] + pub const LOW: Self = Self(0); + #[doc = "Set output to logic high"] + pub const HIGH: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Afr(pub u8); + impl Afr { + #[doc = "AF0"] + pub const AF0: Self = Self(0); + #[doc = "AF1"] + pub const AF1: Self = Self(0x01); + #[doc = "AF2"] + pub const AF2: Self = Self(0x02); + #[doc = "AF3"] + pub const AF3: Self = Self(0x03); + #[doc = "AF4"] + pub const AF4: Self = Self(0x04); + #[doc = "AF5"] + pub const AF5: Self = Self(0x05); + #[doc = "AF6"] + pub const AF6: Self = Self(0x06); + #[doc = "AF7"] + pub const AF7: Self = Self(0x07); + #[doc = "AF8"] + pub const AF8: Self = Self(0x08); + #[doc = "AF9"] + pub const AF9: Self = Self(0x09); + #[doc = "AF10"] + pub const AF10: Self = Self(0x0a); + #[doc = "AF11"] + pub const AF11: Self = Self(0x0b); + #[doc = "AF12"] + pub const AF12: Self = Self(0x0c); + #[doc = "AF13"] + pub const AF13: Self = Self(0x0d); + #[doc = "AF14"] + pub const AF14: Self = Self(0x0e); + #[doc = "AF15"] + pub const AF15: Self = Self(0x0f); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Lckk(pub u8); + impl Lckk { + #[doc = "Port configuration lock key not active"] + pub const NOTACTIVE: Self = Self(0); + #[doc = "Port configuration lock key active"] + pub const ACTIVE: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Brw(pub u8); + impl Brw { + #[doc = "Resets the corresponding ODRx bit"] + pub const RESET: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Idr(pub u8); + impl Idr { + #[doc = "Input is logic low"] + pub const LOW: Self = Self(0); + #[doc = "Input is logic high"] + pub const HIGH: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ospeedr(pub u8); + impl Ospeedr { + #[doc = "Low speed"] + pub const LOWSPEED: Self = Self(0); + #[doc = "Medium speed"] + pub const MEDIUMSPEED: Self = Self(0x01); + #[doc = "High speed"] + pub const HIGHSPEED: Self = Self(0x02); + #[doc = "Very high speed"] + pub const VERYHIGHSPEED: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Bsw(pub u8); + impl Bsw { + #[doc = "Sets the corresponding ODRx bit"] + pub const SET: Self = Self(0x01); + } + } + pub mod regs { + use crate::generic::*; + #[doc = "GPIO port mode register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Moder(pub u32); + impl Moder { + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn moder(&self, n: usize) -> super::vals::Moder { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + let val = (self.0 >> offs) & 0x03; + super::vals::Moder(val as u8) + } + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn set_moder(&mut self, n: usize, val: super::vals::Moder) { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + } + impl Default for Moder { + fn default() -> Moder { + Moder(0) + } + } + #[doc = "GPIO port output type register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Otyper(pub u32); + impl Otyper { + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn ot(&self, n: usize) -> super::vals::Ot { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Ot(val as u8) + } + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn set_ot(&mut self, n: usize, val: super::vals::Ot) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Otyper { + fn default() -> Otyper { + Otyper(0) + } + } + #[doc = "GPIO port output speed register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ospeedr(pub u32); + impl Ospeedr { + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn ospeedr(&self, n: usize) -> super::vals::Ospeedr { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + let val = (self.0 >> offs) & 0x03; + super::vals::Ospeedr(val as u8) + } + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn set_ospeedr(&mut self, n: usize, val: super::vals::Ospeedr) { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + } + impl Default for Ospeedr { + fn default() -> Ospeedr { + Ospeedr(0) + } + } + #[doc = "GPIO port bit set/reset register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Bsrr(pub u32); + impl Bsrr { + #[doc = "Port x set bit y (y= 0..15)"] + pub fn bs(&self, n: usize) -> bool { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Port x set bit y (y= 0..15)"] + pub fn set_bs(&mut self, n: usize, val: bool) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Port x set bit y (y= 0..15)"] + pub fn br(&self, n: usize) -> bool { + assert!(n < 16usize); + let offs = 16usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Port x set bit y (y= 0..15)"] + pub fn set_br(&mut self, n: usize, val: bool) { + assert!(n < 16usize); + let offs = 16usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Bsrr { + fn default() -> Bsrr { + Bsrr(0) + } + } + #[doc = "GPIO alternate function register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Afr(pub u32); + impl Afr { + #[doc = "Alternate function selection for port x bit y (y = 0..15)"] + pub fn afr(&self, n: usize) -> super::vals::Afr { + assert!(n < 8usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x0f; + super::vals::Afr(val as u8) + } + #[doc = "Alternate function selection for port x bit y (y = 0..15)"] + pub fn set_afr(&mut self, n: usize, val: super::vals::Afr) { + assert!(n < 8usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs); + } + } + impl Default for Afr { + fn default() -> Afr { + Afr(0) + } + } + #[doc = "GPIO port configuration lock register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Lckr(pub u32); + impl Lckr { + #[doc = "Port x lock bit y (y= 0..15)"] + pub fn lck(&self, n: usize) -> super::vals::Lck { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Lck(val as u8) + } + #[doc = "Port x lock bit y (y= 0..15)"] + pub fn set_lck(&mut self, n: usize, val: super::vals::Lck) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + #[doc = "Port x lock bit y (y= 0..15)"] + pub const fn lckk(&self) -> super::vals::Lckk { + let val = (self.0 >> 16usize) & 0x01; + super::vals::Lckk(val as u8) + } + #[doc = "Port x lock bit y (y= 0..15)"] + pub fn set_lckk(&mut self, val: super::vals::Lckk) { + self.0 = (self.0 & !(0x01 << 16usize)) | (((val.0 as u32) & 0x01) << 16usize); + } + } + impl Default for Lckr { + fn default() -> Lckr { + Lckr(0) + } + } + #[doc = "GPIO port input data register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Idr(pub u32); + impl Idr { + #[doc = "Port input data (y = 0..15)"] + pub fn idr(&self, n: usize) -> super::vals::Idr { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Idr(val as u8) + } + #[doc = "Port input data (y = 0..15)"] + pub fn set_idr(&mut self, n: usize, val: super::vals::Idr) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Idr { + fn default() -> Idr { + Idr(0) + } + } + #[doc = "GPIO port pull-up/pull-down register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Pupdr(pub u32); + impl Pupdr { + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn pupdr(&self, n: usize) -> super::vals::Pupdr { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + let val = (self.0 >> offs) & 0x03; + super::vals::Pupdr(val as u8) + } + #[doc = "Port x configuration bits (y = 0..15)"] + pub fn set_pupdr(&mut self, n: usize, val: super::vals::Pupdr) { + assert!(n < 16usize); + let offs = 0usize + n * 2usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + } + impl Default for Pupdr { + fn default() -> Pupdr { + Pupdr(0) + } + } + #[doc = "GPIO port output data register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Odr(pub u32); + impl Odr { + #[doc = "Port output data (y = 0..15)"] + pub fn odr(&self, n: usize) -> super::vals::Odr { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Odr(val as u8) + } + #[doc = "Port output data (y = 0..15)"] + pub fn set_odr(&mut self, n: usize, val: super::vals::Odr) { + assert!(n < 16usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Odr { + fn default() -> Odr { + Odr(0) + } + } + } +} +pub mod timer_v1 { + use crate::generic::*; + #[doc = "General purpose 32-bit timer"] + #[derive(Copy, Clone)] + pub struct TimGp32(pub *mut u8); + unsafe impl Send for TimGp32 {} + unsafe impl Sync for TimGp32 {} + impl TimGp32 { + #[doc = "control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "slave mode control register"] + pub fn smcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "DMA/Interrupt enable register"] + pub fn dier(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "event generation register"] + pub fn egr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "capture/compare mode register 1 (input mode)"] + pub fn ccmr_input(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare mode register 1 (output mode)"] + pub fn ccmr_output(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare enable register"] + pub fn ccer(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(32usize)) } + } + #[doc = "counter"] + pub fn cnt(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(36usize)) } + } + #[doc = "prescaler"] + pub fn psc(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(40usize)) } + } + #[doc = "auto-reload register"] + pub fn arr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(44usize)) } + } + #[doc = "capture/compare register"] + pub fn ccr(self, n: usize) -> Reg { + assert!(n < 4usize); + unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) } + } + #[doc = "DMA control register"] + pub fn dcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(72usize)) } + } + #[doc = "DMA address for full transfer"] + pub fn dmar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(76usize)) } + } + } + #[doc = "Basic timer"] + #[derive(Copy, Clone)] + pub struct TimBasic(pub *mut u8); + unsafe impl Send for TimBasic {} + unsafe impl Sync for TimBasic {} + impl TimBasic { + #[doc = "control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "DMA/Interrupt enable register"] + pub fn dier(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "event generation register"] + pub fn egr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "counter"] + pub fn cnt(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(36usize)) } + } + #[doc = "prescaler"] + pub fn psc(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(40usize)) } + } + #[doc = "auto-reload register"] + pub fn arr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(44usize)) } + } + } + #[doc = "General purpose 16-bit timer"] + #[derive(Copy, Clone)] + pub struct TimGp16(pub *mut u8); + unsafe impl Send for TimGp16 {} + unsafe impl Sync for TimGp16 {} + impl TimGp16 { + #[doc = "control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "slave mode control register"] + pub fn smcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "DMA/Interrupt enable register"] + pub fn dier(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "event generation register"] + pub fn egr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "capture/compare mode register 1 (input mode)"] + pub fn ccmr_input(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare mode register 1 (output mode)"] + pub fn ccmr_output(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare enable register"] + pub fn ccer(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(32usize)) } + } + #[doc = "counter"] + pub fn cnt(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(36usize)) } + } + #[doc = "prescaler"] + pub fn psc(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(40usize)) } + } + #[doc = "auto-reload register"] + pub fn arr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(44usize)) } + } + #[doc = "capture/compare register"] + pub fn ccr(self, n: usize) -> Reg { + assert!(n < 4usize); + unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) } + } + #[doc = "DMA control register"] + pub fn dcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(72usize)) } + } + #[doc = "DMA address for full transfer"] + pub fn dmar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(76usize)) } + } + } + #[doc = "Advanced-timers"] + #[derive(Copy, Clone)] + pub struct TimAdv(pub *mut u8); + unsafe impl Send for TimAdv {} + unsafe impl Sync for TimAdv {} + impl TimAdv { + #[doc = "control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "slave mode control register"] + pub fn smcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "DMA/Interrupt enable register"] + pub fn dier(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "event generation register"] + pub fn egr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "capture/compare mode register 1 (input mode)"] + pub fn ccmr_input(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare mode register 1 (output mode)"] + pub fn ccmr_output(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(24usize + n * 4usize)) } + } + #[doc = "capture/compare enable register"] + pub fn ccer(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(32usize)) } + } + #[doc = "counter"] + pub fn cnt(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(36usize)) } + } + #[doc = "prescaler"] + pub fn psc(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(40usize)) } + } + #[doc = "auto-reload register"] + pub fn arr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(44usize)) } + } + #[doc = "repetition counter register"] + pub fn rcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(48usize)) } + } + #[doc = "capture/compare register"] + pub fn ccr(self, n: usize) -> Reg { + assert!(n < 4usize); + unsafe { Reg::from_ptr(self.0.add(52usize + n * 4usize)) } + } + #[doc = "break and dead-time register"] + pub fn bdtr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(68usize)) } + } + #[doc = "DMA control register"] + pub fn dcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(72usize)) } + } + #[doc = "DMA address for full transfer"] + pub fn dmar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(76usize)) } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Dir(pub u8); + impl Dir { + #[doc = "Counter used as upcounter"] + pub const UP: Self = Self(0); + #[doc = "Counter used as downcounter"] + pub const DOWN: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Opm(pub u8); + impl Opm { + #[doc = "Counter is not stopped at update event"] + pub const DISABLED: Self = Self(0); + #[doc = "Counter stops counting at the next update event (clearing the CEN bit)"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Cms(pub u8); + impl Cms { + #[doc = "The counter counts up or down depending on the direction bit"] + pub const EDGEALIGNED: Self = Self(0); + #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting down."] + pub const CENTERALIGNED1: Self = Self(0x01); + #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set only when the counter is counting up."] + pub const CENTERALIGNED2: Self = Self(0x02); + #[doc = "The counter counts up and down alternatively. Output compare interrupt flags are set both when the counter is counting up or down."] + pub const CENTERALIGNED3: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ts(pub u8); + impl Ts { + #[doc = "Internal Trigger 0 (ITR0)"] + pub const ITR0: Self = Self(0); + #[doc = "Internal Trigger 1 (ITR1)"] + pub const ITR1: Self = Self(0x01); + #[doc = "Internal Trigger 2 (ITR2)"] + pub const ITR2: Self = Self(0x02); + #[doc = "TI1 Edge Detector (TI1F_ED)"] + pub const TI1F_ED: Self = Self(0x04); + #[doc = "Filtered Timer Input 1 (TI1FP1)"] + pub const TI1FP1: Self = Self(0x05); + #[doc = "Filtered Timer Input 2 (TI2FP2)"] + pub const TI2FP2: Self = Self(0x06); + #[doc = "External Trigger input (ETRF)"] + pub const ETRF: Self = Self(0x07); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct CcmrOutputCcs(pub u8); + impl CcmrOutputCcs { + #[doc = "CCx channel is configured as output"] + pub const OUTPUT: Self = Self(0); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Etps(pub u8); + impl Etps { + #[doc = "Prescaler OFF"] + pub const DIV1: Self = Self(0); + #[doc = "ETRP frequency divided by 2"] + pub const DIV2: Self = Self(0x01); + #[doc = "ETRP frequency divided by 4"] + pub const DIV4: Self = Self(0x02); + #[doc = "ETRP frequency divided by 8"] + pub const DIV8: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Tis(pub u8); + impl Tis { + #[doc = "The TIMx_CH1 pin is connected to TI1 input"] + pub const NORMAL: Self = Self(0); + #[doc = "The TIMx_CH1, CH2, CH3 pins are connected to TI1 input"] + pub const XOR: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Etp(pub u8); + impl Etp { + #[doc = "ETR is noninverted, active at high level or rising edge"] + pub const NOTINVERTED: Self = Self(0); + #[doc = "ETR is inverted, active at low level or falling edge"] + pub const INVERTED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct CcmrInputCcs(pub u8); + impl CcmrInputCcs { + #[doc = "CCx channel is configured as input, normal mapping: ICx mapped to TIx"] + pub const TI4: Self = Self(0x01); + #[doc = "CCx channel is configured as input, alternate mapping (switches 1 with 2, 3 with 4)"] + pub const TI3: Self = Self(0x02); + #[doc = "CCx channel is configured as input, ICx is mapped on TRC"] + pub const TRC: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ocpe(pub u8); + impl Ocpe { + #[doc = "Preload register on CCR2 disabled. New values written to CCR2 are taken into account immediately"] + pub const DISABLED: Self = Self(0); + #[doc = "Preload register on CCR2 enabled. Preload value is loaded into active register on each update event"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Mms(pub u8); + impl Mms { + #[doc = "The UG bit from the TIMx_EGR register is used as trigger output"] + pub const RESET: Self = Self(0); + #[doc = "The counter enable signal, CNT_EN, is used as trigger output"] + pub const ENABLE: Self = Self(0x01); + #[doc = "The update event is selected as trigger output"] + pub const UPDATE: Self = Self(0x02); + #[doc = "The trigger output send a positive pulse when the CC1IF flag it to be set, as soon as a capture or a compare match occurred"] + pub const COMPAREPULSE: Self = Self(0x03); + #[doc = "OC1REF signal is used as trigger output"] + pub const COMPAREOC1: Self = Self(0x04); + #[doc = "OC2REF signal is used as trigger output"] + pub const COMPAREOC2: Self = Self(0x05); + #[doc = "OC3REF signal is used as trigger output"] + pub const COMPAREOC3: Self = Self(0x06); + #[doc = "OC4REF signal is used as trigger output"] + pub const COMPAREOC4: Self = Self(0x07); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Arpe(pub u8); + impl Arpe { + #[doc = "TIMx_APRR register is not buffered"] + pub const DISABLED: Self = Self(0); + #[doc = "TIMx_APRR register is buffered"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ccds(pub u8); + impl Ccds { + #[doc = "CCx DMA request sent when CCx event occurs"] + pub const ONCOMPARE: Self = Self(0); + #[doc = "CCx DMA request sent when update event occurs"] + pub const ONUPDATE: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ckd(pub u8); + impl Ckd { + #[doc = "t_DTS = t_CK_INT"] + pub const DIV1: Self = Self(0); + #[doc = "t_DTS = 2 × t_CK_INT"] + pub const DIV2: Self = Self(0x01); + #[doc = "t_DTS = 4 × t_CK_INT"] + pub const DIV4: Self = Self(0x02); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Msm(pub u8); + impl Msm { + #[doc = "No action"] + pub const NOSYNC: Self = Self(0); + #[doc = "The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event."] + pub const SYNC: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Icf(pub u8); + impl Icf { + #[doc = "No filter, sampling is done at fDTS"] + pub const NOFILTER: Self = Self(0); + #[doc = "fSAMPLING=fCK_INT, N=2"] + pub const FCK_INT_N2: Self = Self(0x01); + #[doc = "fSAMPLING=fCK_INT, N=4"] + pub const FCK_INT_N4: Self = Self(0x02); + #[doc = "fSAMPLING=fCK_INT, N=8"] + pub const FCK_INT_N8: Self = Self(0x03); + #[doc = "fSAMPLING=fDTS/2, N=6"] + pub const FDTS_DIV2_N6: Self = Self(0x04); + #[doc = "fSAMPLING=fDTS/2, N=8"] + pub const FDTS_DIV2_N8: Self = Self(0x05); + #[doc = "fSAMPLING=fDTS/4, N=6"] + pub const FDTS_DIV4_N6: Self = Self(0x06); + #[doc = "fSAMPLING=fDTS/4, N=8"] + pub const FDTS_DIV4_N8: Self = Self(0x07); + #[doc = "fSAMPLING=fDTS/8, N=6"] + pub const FDTS_DIV8_N6: Self = Self(0x08); + #[doc = "fSAMPLING=fDTS/8, N=8"] + pub const FDTS_DIV8_N8: Self = Self(0x09); + #[doc = "fSAMPLING=fDTS/16, N=5"] + pub const FDTS_DIV16_N5: Self = Self(0x0a); + #[doc = "fSAMPLING=fDTS/16, N=6"] + pub const FDTS_DIV16_N6: Self = Self(0x0b); + #[doc = "fSAMPLING=fDTS/16, N=8"] + pub const FDTS_DIV16_N8: Self = Self(0x0c); + #[doc = "fSAMPLING=fDTS/32, N=5"] + pub const FDTS_DIV32_N5: Self = Self(0x0d); + #[doc = "fSAMPLING=fDTS/32, N=6"] + pub const FDTS_DIV32_N6: Self = Self(0x0e); + #[doc = "fSAMPLING=fDTS/32, N=8"] + pub const FDTS_DIV32_N8: Self = Self(0x0f); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ece(pub u8); + impl Ece { + #[doc = "External clock mode 2 disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal."] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Sms(pub u8); + impl Sms { + #[doc = "Slave mode disabled - if CEN = ‘1 then the prescaler is clocked directly by the internal clock."] + pub const DISABLED: Self = Self(0); + #[doc = "Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level."] + pub const ENCODER_MODE_1: Self = Self(0x01); + #[doc = "Encoder mode 2 - Counter counts up/down on TI1FP2 edge depending on TI2FP1 level."] + pub const ENCODER_MODE_2: Self = Self(0x02); + #[doc = "Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input."] + pub const ENCODER_MODE_3: Self = Self(0x03); + #[doc = "Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers."] + pub const RESET_MODE: Self = Self(0x04); + #[doc = "Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled."] + pub const GATED_MODE: Self = Self(0x05); + #[doc = "Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled."] + pub const TRIGGER_MODE: Self = Self(0x06); + #[doc = "External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter."] + pub const EXT_CLOCK_MODE: Self = Self(0x07); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ossr(pub u8); + impl Ossr { + #[doc = "When inactive, OC/OCN outputs are disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "When inactive, OC/OCN outputs are enabled with their inactive level"] + pub const IDLELEVEL: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ossi(pub u8); + impl Ossi { + #[doc = "When inactive, OC/OCN outputs are disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "When inactive, OC/OCN outputs are forced to idle level"] + pub const IDLELEVEL: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ocm(pub u8); + impl Ocm { + #[doc = "The comparison between the output compare register TIMx_CCRy and the counter TIMx_CNT has no effect on the outputs"] + pub const FROZEN: Self = Self(0); + #[doc = "Set channel to active level on match. OCyREF signal is forced high when the counter matches the capture/compare register"] + pub const ACTIVEONMATCH: Self = Self(0x01); + #[doc = "Set channel to inactive level on match. OCyREF signal is forced low when the counter matches the capture/compare register"] + pub const INACTIVEONMATCH: Self = Self(0x02); + #[doc = "OCyREF toggles when TIMx_CNT=TIMx_CCRy"] + pub const TOGGLE: Self = Self(0x03); + #[doc = "OCyREF is forced low"] + pub const FORCEINACTIVE: Self = Self(0x04); + #[doc = "OCyREF is forced high"] + pub const FORCEACTIVE: Self = Self(0x05); + #[doc = "In upcounting, channel is active as long as TIMx_CNTTIMx_CCRy else active"] + pub const PWMMODE1: Self = Self(0x06); + #[doc = "Inversely to PwmMode1"] + pub const PWMMODE2: Self = Self(0x07); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Urs(pub u8); + impl Urs { + #[doc = "Any of counter overflow/underflow, setting UG, or update through slave mode, generates an update interrupt or DMA request"] + pub const ANYEVENT: Self = Self(0); + #[doc = "Only counter overflow/underflow generates an update interrupt or DMA request"] + pub const COUNTERONLY: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Etf(pub u8); + impl Etf { + #[doc = "No filter, sampling is done at fDTS"] + pub const NOFILTER: Self = Self(0); + #[doc = "fSAMPLING=fCK_INT, N=2"] + pub const FCK_INT_N2: Self = Self(0x01); + #[doc = "fSAMPLING=fCK_INT, N=4"] + pub const FCK_INT_N4: Self = Self(0x02); + #[doc = "fSAMPLING=fCK_INT, N=8"] + pub const FCK_INT_N8: Self = Self(0x03); + #[doc = "fSAMPLING=fDTS/2, N=6"] + pub const FDTS_DIV2_N6: Self = Self(0x04); + #[doc = "fSAMPLING=fDTS/2, N=8"] + pub const FDTS_DIV2_N8: Self = Self(0x05); + #[doc = "fSAMPLING=fDTS/4, N=6"] + pub const FDTS_DIV4_N6: Self = Self(0x06); + #[doc = "fSAMPLING=fDTS/4, N=8"] + pub const FDTS_DIV4_N8: Self = Self(0x07); + #[doc = "fSAMPLING=fDTS/8, N=6"] + pub const FDTS_DIV8_N6: Self = Self(0x08); + #[doc = "fSAMPLING=fDTS/8, N=8"] + pub const FDTS_DIV8_N8: Self = Self(0x09); + #[doc = "fSAMPLING=fDTS/16, N=5"] + pub const FDTS_DIV16_N5: Self = Self(0x0a); + #[doc = "fSAMPLING=fDTS/16, N=6"] + pub const FDTS_DIV16_N6: Self = Self(0x0b); + #[doc = "fSAMPLING=fDTS/16, N=8"] + pub const FDTS_DIV16_N8: Self = Self(0x0c); + #[doc = "fSAMPLING=fDTS/32, N=5"] + pub const FDTS_DIV32_N5: Self = Self(0x0d); + #[doc = "fSAMPLING=fDTS/32, N=6"] + pub const FDTS_DIV32_N6: Self = Self(0x0e); + #[doc = "fSAMPLING=fDTS/32, N=8"] + pub const FDTS_DIV32_N8: Self = Self(0x0f); + } + } + pub mod regs { + use crate::generic::*; + #[doc = "capture/compare register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ccr16(pub u32); + impl Ccr16 { + #[doc = "Capture/Compare 1 value"] + pub const fn ccr(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "Capture/Compare 1 value"] + pub fn set_ccr(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Ccr16 { + fn default() -> Ccr16 { + Ccr16(0) + } + } + #[doc = "capture/compare mode register 2 (output mode)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct CcmrOutput(pub u32); + impl CcmrOutput { + #[doc = "Capture/Compare 3 selection"] + pub fn ccs(&self, n: usize) -> super::vals::CcmrOutputCcs { + assert!(n < 2usize); + let offs = 0usize + n * 8usize; + let val = (self.0 >> offs) & 0x03; + super::vals::CcmrOutputCcs(val as u8) + } + #[doc = "Capture/Compare 3 selection"] + pub fn set_ccs(&mut self, n: usize, val: super::vals::CcmrOutputCcs) { + assert!(n < 2usize); + let offs = 0usize + n * 8usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + #[doc = "Output compare 3 fast enable"] + pub fn ocfe(&self, n: usize) -> bool { + assert!(n < 2usize); + let offs = 2usize + n * 8usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Output compare 3 fast enable"] + pub fn set_ocfe(&mut self, n: usize, val: bool) { + assert!(n < 2usize); + let offs = 2usize + n * 8usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Output compare 3 preload enable"] + pub fn ocpe(&self, n: usize) -> super::vals::Ocpe { + assert!(n < 2usize); + let offs = 3usize + n * 8usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Ocpe(val as u8) + } + #[doc = "Output compare 3 preload enable"] + pub fn set_ocpe(&mut self, n: usize, val: super::vals::Ocpe) { + assert!(n < 2usize); + let offs = 3usize + n * 8usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + #[doc = "Output compare 3 mode"] + pub fn ocm(&self, n: usize) -> super::vals::Ocm { + assert!(n < 2usize); + let offs = 4usize + n * 8usize; + let val = (self.0 >> offs) & 0x07; + super::vals::Ocm(val as u8) + } + #[doc = "Output compare 3 mode"] + pub fn set_ocm(&mut self, n: usize, val: super::vals::Ocm) { + assert!(n < 2usize); + let offs = 4usize + n * 8usize; + self.0 = (self.0 & !(0x07 << offs)) | (((val.0 as u32) & 0x07) << offs); + } + #[doc = "Output compare 3 clear enable"] + pub fn occe(&self, n: usize) -> bool { + assert!(n < 2usize); + let offs = 7usize + n * 8usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Output compare 3 clear enable"] + pub fn set_occe(&mut self, n: usize, val: bool) { + assert!(n < 2usize); + let offs = 7usize + n * 8usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for CcmrOutput { + fn default() -> CcmrOutput { + CcmrOutput(0) + } + } + #[doc = "DMA/Interrupt enable register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct DierBasic(pub u32); + impl DierBasic { + #[doc = "Update interrupt enable"] + pub const fn uie(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt enable"] + pub fn set_uie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Update DMA request enable"] + pub const fn ude(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Update DMA request enable"] + pub fn set_ude(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + } + impl Default for DierBasic { + fn default() -> DierBasic { + DierBasic(0) + } + } + #[doc = "capture/compare register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ccr32(pub u32); + impl Ccr32 { + #[doc = "Capture/Compare 1 value"] + pub const fn ccr(&self) -> u32 { + let val = (self.0 >> 0usize) & 0xffff_ffff; + val as u32 + } + #[doc = "Capture/Compare 1 value"] + pub fn set_ccr(&mut self, val: u32) { + self.0 = + (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); + } + } + impl Default for Ccr32 { + fn default() -> Ccr32 { + Ccr32(0) + } + } + #[doc = "prescaler"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Psc(pub u32); + impl Psc { + #[doc = "Prescaler value"] + pub const fn psc(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "Prescaler value"] + pub fn set_psc(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Psc { + fn default() -> Psc { + Psc(0) + } + } + #[doc = "break and dead-time register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Bdtr(pub u32); + impl Bdtr { + #[doc = "Dead-time generator setup"] + pub const fn dtg(&self) -> u8 { + let val = (self.0 >> 0usize) & 0xff; + val as u8 + } + #[doc = "Dead-time generator setup"] + pub fn set_dtg(&mut self, val: u8) { + self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize); + } + #[doc = "Lock configuration"] + pub const fn lock(&self) -> u8 { + let val = (self.0 >> 8usize) & 0x03; + val as u8 + } + #[doc = "Lock configuration"] + pub fn set_lock(&mut self, val: u8) { + self.0 = (self.0 & !(0x03 << 8usize)) | (((val as u32) & 0x03) << 8usize); + } + #[doc = "Off-state selection for Idle mode"] + pub const fn ossi(&self) -> super::vals::Ossi { + let val = (self.0 >> 10usize) & 0x01; + super::vals::Ossi(val as u8) + } + #[doc = "Off-state selection for Idle mode"] + pub fn set_ossi(&mut self, val: super::vals::Ossi) { + self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize); + } + #[doc = "Off-state selection for Run mode"] + pub const fn ossr(&self) -> super::vals::Ossr { + let val = (self.0 >> 11usize) & 0x01; + super::vals::Ossr(val as u8) + } + #[doc = "Off-state selection for Run mode"] + pub fn set_ossr(&mut self, val: super::vals::Ossr) { + self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize); + } + #[doc = "Break enable"] + pub const fn bke(&self) -> bool { + let val = (self.0 >> 12usize) & 0x01; + val != 0 + } + #[doc = "Break enable"] + pub fn set_bke(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 12usize)) | (((val as u32) & 0x01) << 12usize); + } + #[doc = "Break polarity"] + pub const fn bkp(&self) -> bool { + let val = (self.0 >> 13usize) & 0x01; + val != 0 + } + #[doc = "Break polarity"] + pub fn set_bkp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); + } + #[doc = "Automatic output enable"] + pub const fn aoe(&self) -> bool { + let val = (self.0 >> 14usize) & 0x01; + val != 0 + } + #[doc = "Automatic output enable"] + pub fn set_aoe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); + } + #[doc = "Main output enable"] + pub const fn moe(&self) -> bool { + let val = (self.0 >> 15usize) & 0x01; + val != 0 + } + #[doc = "Main output enable"] + pub fn set_moe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 15usize)) | (((val as u32) & 0x01) << 15usize); + } + } + impl Default for Bdtr { + fn default() -> Bdtr { + Bdtr(0) + } + } + #[doc = "status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct SrBasic(pub u32); + impl SrBasic { + #[doc = "Update interrupt flag"] + pub const fn uif(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt flag"] + pub fn set_uif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + } + impl Default for SrBasic { + fn default() -> SrBasic { + SrBasic(0) + } + } + #[doc = "status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct SrGp(pub u32); + impl SrGp { + #[doc = "Update interrupt flag"] + pub const fn uif(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt flag"] + pub fn set_uif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/compare 1 interrupt flag"] + pub fn ccif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/compare 1 interrupt flag"] + pub fn set_ccif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "COM interrupt flag"] + pub const fn comif(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "COM interrupt flag"] + pub fn set_comif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Trigger interrupt flag"] + pub const fn tif(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger interrupt flag"] + pub fn set_tif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Break interrupt flag"] + pub const fn bif(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Break interrupt flag"] + pub fn set_bif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "Capture/Compare 1 overcapture flag"] + pub fn ccof(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 overcapture flag"] + pub fn set_ccof(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for SrGp { + fn default() -> SrGp { + SrGp(0) + } + } + #[doc = "DMA address for full transfer"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Dmar(pub u32); + impl Dmar { + #[doc = "DMA register for burst accesses"] + pub const fn dmab(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "DMA register for burst accesses"] + pub fn set_dmab(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Dmar { + fn default() -> Dmar { + Dmar(0) + } + } + #[doc = "event generation register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct EgrAdv(pub u32); + impl EgrAdv { + #[doc = "Update generation"] + pub const fn ug(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update generation"] + pub fn set_ug(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/compare 1 generation"] + pub fn ccg(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/compare 1 generation"] + pub fn set_ccg(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare control update generation"] + pub const fn comg(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Capture/Compare control update generation"] + pub fn set_comg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Trigger generation"] + pub const fn tg(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger generation"] + pub fn set_tg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Break generation"] + pub const fn bg(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Break generation"] + pub fn set_bg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + } + impl Default for EgrAdv { + fn default() -> EgrAdv { + EgrAdv(0) + } + } + #[doc = "event generation register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct EgrBasic(pub u32); + impl EgrBasic { + #[doc = "Update generation"] + pub const fn ug(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update generation"] + pub fn set_ug(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + } + impl Default for EgrBasic { + fn default() -> EgrBasic { + EgrBasic(0) + } + } + #[doc = "counter"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cnt32(pub u32); + impl Cnt32 { + #[doc = "counter value"] + pub const fn cnt(&self) -> u32 { + let val = (self.0 >> 0usize) & 0xffff_ffff; + val as u32 + } + #[doc = "counter value"] + pub fn set_cnt(&mut self, val: u32) { + self.0 = + (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); + } + } + impl Default for Cnt32 { + fn default() -> Cnt32 { + Cnt32(0) + } + } + #[doc = "DMA/Interrupt enable register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct DierGp(pub u32); + impl DierGp { + #[doc = "Update interrupt enable"] + pub const fn uie(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt enable"] + pub fn set_uie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/Compare 1 interrupt enable"] + pub fn ccie(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 interrupt enable"] + pub fn set_ccie(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Trigger interrupt enable"] + pub const fn tie(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger interrupt enable"] + pub fn set_tie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Update DMA request enable"] + pub const fn ude(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Update DMA request enable"] + pub fn set_ude(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "Capture/Compare 1 DMA request enable"] + pub fn ccde(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 DMA request enable"] + pub fn set_ccde(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Trigger DMA request enable"] + pub const fn tde(&self) -> bool { + let val = (self.0 >> 14usize) & 0x01; + val != 0 + } + #[doc = "Trigger DMA request enable"] + pub fn set_tde(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); + } + } + impl Default for DierGp { + fn default() -> DierGp { + DierGp(0) + } + } + #[doc = "control register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr1Gp(pub u32); + impl Cr1Gp { + #[doc = "Counter enable"] + pub const fn cen(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Counter enable"] + pub fn set_cen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Update disable"] + pub const fn udis(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Update disable"] + pub fn set_udis(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Update request source"] + pub const fn urs(&self) -> super::vals::Urs { + let val = (self.0 >> 2usize) & 0x01; + super::vals::Urs(val as u8) + } + #[doc = "Update request source"] + pub fn set_urs(&mut self, val: super::vals::Urs) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize); + } + #[doc = "One-pulse mode"] + pub const fn opm(&self) -> super::vals::Opm { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Opm(val as u8) + } + #[doc = "One-pulse mode"] + pub fn set_opm(&mut self, val: super::vals::Opm) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "Direction"] + pub const fn dir(&self) -> super::vals::Dir { + let val = (self.0 >> 4usize) & 0x01; + super::vals::Dir(val as u8) + } + #[doc = "Direction"] + pub fn set_dir(&mut self, val: super::vals::Dir) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize); + } + #[doc = "Center-aligned mode selection"] + pub const fn cms(&self) -> super::vals::Cms { + let val = (self.0 >> 5usize) & 0x03; + super::vals::Cms(val as u8) + } + #[doc = "Center-aligned mode selection"] + pub fn set_cms(&mut self, val: super::vals::Cms) { + self.0 = (self.0 & !(0x03 << 5usize)) | (((val.0 as u32) & 0x03) << 5usize); + } + #[doc = "Auto-reload preload enable"] + pub const fn arpe(&self) -> super::vals::Arpe { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Arpe(val as u8) + } + #[doc = "Auto-reload preload enable"] + pub fn set_arpe(&mut self, val: super::vals::Arpe) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + #[doc = "Clock division"] + pub const fn ckd(&self) -> super::vals::Ckd { + let val = (self.0 >> 8usize) & 0x03; + super::vals::Ckd(val as u8) + } + #[doc = "Clock division"] + pub fn set_ckd(&mut self, val: super::vals::Ckd) { + self.0 = (self.0 & !(0x03 << 8usize)) | (((val.0 as u32) & 0x03) << 8usize); + } + } + impl Default for Cr1Gp { + fn default() -> Cr1Gp { + Cr1Gp(0) + } + } + #[doc = "control register 2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr2Adv(pub u32); + impl Cr2Adv { + #[doc = "Capture/compare preloaded control"] + pub const fn ccpc(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Capture/compare preloaded control"] + pub fn set_ccpc(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/compare control update selection"] + pub const fn ccus(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Capture/compare control update selection"] + pub fn set_ccus(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Capture/compare DMA selection"] + pub const fn ccds(&self) -> super::vals::Ccds { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Ccds(val as u8) + } + #[doc = "Capture/compare DMA selection"] + pub fn set_ccds(&mut self, val: super::vals::Ccds) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "Master mode selection"] + pub const fn mms(&self) -> super::vals::Mms { + let val = (self.0 >> 4usize) & 0x07; + super::vals::Mms(val as u8) + } + #[doc = "Master mode selection"] + pub fn set_mms(&mut self, val: super::vals::Mms) { + self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); + } + #[doc = "TI1 selection"] + pub const fn ti1s(&self) -> super::vals::Tis { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Tis(val as u8) + } + #[doc = "TI1 selection"] + pub fn set_ti1s(&mut self, val: super::vals::Tis) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + #[doc = "Output Idle state 1"] + pub fn ois(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 8usize + n * 2usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Output Idle state 1"] + pub fn set_ois(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 8usize + n * 2usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Output Idle state 1"] + pub const fn ois1n(&self) -> bool { + let val = (self.0 >> 9usize) & 0x01; + val != 0 + } + #[doc = "Output Idle state 1"] + pub fn set_ois1n(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); + } + #[doc = "Output Idle state 2"] + pub const fn ois2n(&self) -> bool { + let val = (self.0 >> 11usize) & 0x01; + val != 0 + } + #[doc = "Output Idle state 2"] + pub fn set_ois2n(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); + } + #[doc = "Output Idle state 3"] + pub const fn ois3n(&self) -> bool { + let val = (self.0 >> 13usize) & 0x01; + val != 0 + } + #[doc = "Output Idle state 3"] + pub fn set_ois3n(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); + } + } + impl Default for Cr2Adv { + fn default() -> Cr2Adv { + Cr2Adv(0) + } + } + #[doc = "auto-reload register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Arr16(pub u32); + impl Arr16 { + #[doc = "Auto-reload value"] + pub const fn arr(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "Auto-reload value"] + pub fn set_arr(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Arr16 { + fn default() -> Arr16 { + Arr16(0) + } + } + #[doc = "DMA/Interrupt enable register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct DierAdv(pub u32); + impl DierAdv { + #[doc = "Update interrupt enable"] + pub const fn uie(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt enable"] + pub fn set_uie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/Compare 1 interrupt enable"] + pub fn ccie(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 interrupt enable"] + pub fn set_ccie(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "COM interrupt enable"] + pub const fn comie(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "COM interrupt enable"] + pub fn set_comie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Trigger interrupt enable"] + pub const fn tie(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger interrupt enable"] + pub fn set_tie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Break interrupt enable"] + pub const fn bie(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Break interrupt enable"] + pub fn set_bie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "Update DMA request enable"] + pub const fn ude(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Update DMA request enable"] + pub fn set_ude(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "Capture/Compare 1 DMA request enable"] + pub fn ccde(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 DMA request enable"] + pub fn set_ccde(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "COM DMA request enable"] + pub const fn comde(&self) -> bool { + let val = (self.0 >> 13usize) & 0x01; + val != 0 + } + #[doc = "COM DMA request enable"] + pub fn set_comde(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); + } + #[doc = "Trigger DMA request enable"] + pub const fn tde(&self) -> bool { + let val = (self.0 >> 14usize) & 0x01; + val != 0 + } + #[doc = "Trigger DMA request enable"] + pub fn set_tde(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); + } + } + impl Default for DierAdv { + fn default() -> DierAdv { + DierAdv(0) + } + } + #[doc = "DMA control register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Dcr(pub u32); + impl Dcr { + #[doc = "DMA base address"] + pub const fn dba(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x1f; + val as u8 + } + #[doc = "DMA base address"] + pub fn set_dba(&mut self, val: u8) { + self.0 = (self.0 & !(0x1f << 0usize)) | (((val as u32) & 0x1f) << 0usize); + } + #[doc = "DMA burst length"] + pub const fn dbl(&self) -> u8 { + let val = (self.0 >> 8usize) & 0x1f; + val as u8 + } + #[doc = "DMA burst length"] + pub fn set_dbl(&mut self, val: u8) { + self.0 = (self.0 & !(0x1f << 8usize)) | (((val as u32) & 0x1f) << 8usize); + } + } + impl Default for Dcr { + fn default() -> Dcr { + Dcr(0) + } + } + #[doc = "auto-reload register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Arr32(pub u32); + impl Arr32 { + #[doc = "Auto-reload value"] + pub const fn arr(&self) -> u32 { + let val = (self.0 >> 0usize) & 0xffff_ffff; + val as u32 + } + #[doc = "Auto-reload value"] + pub fn set_arr(&mut self, val: u32) { + self.0 = + (self.0 & !(0xffff_ffff << 0usize)) | (((val as u32) & 0xffff_ffff) << 0usize); + } + } + impl Default for Arr32 { + fn default() -> Arr32 { + Arr32(0) + } + } + #[doc = "capture/compare enable register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct CcerAdv(pub u32); + impl CcerAdv { + #[doc = "Capture/Compare 1 output enable"] + pub fn cce(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output enable"] + pub fn set_cce(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn ccp(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn set_ccp(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare 1 complementary output enable"] + pub fn ccne(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 2usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 complementary output enable"] + pub fn set_ccne(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 2usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn ccnp(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 3usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn set_ccnp(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 3usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for CcerAdv { + fn default() -> CcerAdv { + CcerAdv(0) + } + } + #[doc = "control register 2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr2Basic(pub u32); + impl Cr2Basic { + #[doc = "Master mode selection"] + pub const fn mms(&self) -> super::vals::Mms { + let val = (self.0 >> 4usize) & 0x07; + super::vals::Mms(val as u8) + } + #[doc = "Master mode selection"] + pub fn set_mms(&mut self, val: super::vals::Mms) { + self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); + } + } + impl Default for Cr2Basic { + fn default() -> Cr2Basic { + Cr2Basic(0) + } + } + #[doc = "capture/compare enable register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct CcerGp(pub u32); + impl CcerGp { + #[doc = "Capture/Compare 1 output enable"] + pub fn cce(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output enable"] + pub fn set_cce(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn ccp(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn set_ccp(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn ccnp(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 3usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 output Polarity"] + pub fn set_ccnp(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 3usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for CcerGp { + fn default() -> CcerGp { + CcerGp(0) + } + } + #[doc = "slave mode control register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Smcr(pub u32); + impl Smcr { + #[doc = "Slave mode selection"] + pub const fn sms(&self) -> super::vals::Sms { + let val = (self.0 >> 0usize) & 0x07; + super::vals::Sms(val as u8) + } + #[doc = "Slave mode selection"] + pub fn set_sms(&mut self, val: super::vals::Sms) { + self.0 = (self.0 & !(0x07 << 0usize)) | (((val.0 as u32) & 0x07) << 0usize); + } + #[doc = "Trigger selection"] + pub const fn ts(&self) -> super::vals::Ts { + let val = (self.0 >> 4usize) & 0x07; + super::vals::Ts(val as u8) + } + #[doc = "Trigger selection"] + pub fn set_ts(&mut self, val: super::vals::Ts) { + self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); + } + #[doc = "Master/Slave mode"] + pub const fn msm(&self) -> super::vals::Msm { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Msm(val as u8) + } + #[doc = "Master/Slave mode"] + pub fn set_msm(&mut self, val: super::vals::Msm) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + #[doc = "External trigger filter"] + pub const fn etf(&self) -> super::vals::Etf { + let val = (self.0 >> 8usize) & 0x0f; + super::vals::Etf(val as u8) + } + #[doc = "External trigger filter"] + pub fn set_etf(&mut self, val: super::vals::Etf) { + self.0 = (self.0 & !(0x0f << 8usize)) | (((val.0 as u32) & 0x0f) << 8usize); + } + #[doc = "External trigger prescaler"] + pub const fn etps(&self) -> super::vals::Etps { + let val = (self.0 >> 12usize) & 0x03; + super::vals::Etps(val as u8) + } + #[doc = "External trigger prescaler"] + pub fn set_etps(&mut self, val: super::vals::Etps) { + self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); + } + #[doc = "External clock enable"] + pub const fn ece(&self) -> super::vals::Ece { + let val = (self.0 >> 14usize) & 0x01; + super::vals::Ece(val as u8) + } + #[doc = "External clock enable"] + pub fn set_ece(&mut self, val: super::vals::Ece) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize); + } + #[doc = "External trigger polarity"] + pub const fn etp(&self) -> super::vals::Etp { + let val = (self.0 >> 15usize) & 0x01; + super::vals::Etp(val as u8) + } + #[doc = "External trigger polarity"] + pub fn set_etp(&mut self, val: super::vals::Etp) { + self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize); + } + } + impl Default for Smcr { + fn default() -> Smcr { + Smcr(0) + } + } + #[doc = "capture/compare mode register 1 (input mode)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct CcmrInput(pub u32); + impl CcmrInput { + #[doc = "Capture/Compare 1 selection"] + pub fn ccs(&self, n: usize) -> super::vals::CcmrInputCcs { + assert!(n < 2usize); + let offs = 0usize + n * 8usize; + let val = (self.0 >> offs) & 0x03; + super::vals::CcmrInputCcs(val as u8) + } + #[doc = "Capture/Compare 1 selection"] + pub fn set_ccs(&mut self, n: usize, val: super::vals::CcmrInputCcs) { + assert!(n < 2usize); + let offs = 0usize + n * 8usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val.0 as u32) & 0x03) << offs); + } + #[doc = "Input capture 1 prescaler"] + pub fn icpsc(&self, n: usize) -> u8 { + assert!(n < 2usize); + let offs = 2usize + n * 8usize; + let val = (self.0 >> offs) & 0x03; + val as u8 + } + #[doc = "Input capture 1 prescaler"] + pub fn set_icpsc(&mut self, n: usize, val: u8) { + assert!(n < 2usize); + let offs = 2usize + n * 8usize; + self.0 = (self.0 & !(0x03 << offs)) | (((val as u32) & 0x03) << offs); + } + #[doc = "Input capture 1 filter"] + pub fn icf(&self, n: usize) -> super::vals::Icf { + assert!(n < 2usize); + let offs = 4usize + n * 8usize; + let val = (self.0 >> offs) & 0x0f; + super::vals::Icf(val as u8) + } + #[doc = "Input capture 1 filter"] + pub fn set_icf(&mut self, n: usize, val: super::vals::Icf) { + assert!(n < 2usize); + let offs = 4usize + n * 8usize; + self.0 = (self.0 & !(0x0f << offs)) | (((val.0 as u32) & 0x0f) << offs); + } + } + impl Default for CcmrInput { + fn default() -> CcmrInput { + CcmrInput(0) + } + } + #[doc = "event generation register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct EgrGp(pub u32); + impl EgrGp { + #[doc = "Update generation"] + pub const fn ug(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update generation"] + pub fn set_ug(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/compare 1 generation"] + pub fn ccg(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/compare 1 generation"] + pub fn set_ccg(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Capture/Compare control update generation"] + pub const fn comg(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Capture/Compare control update generation"] + pub fn set_comg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Trigger generation"] + pub const fn tg(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger generation"] + pub fn set_tg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Break generation"] + pub const fn bg(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Break generation"] + pub fn set_bg(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + } + impl Default for EgrGp { + fn default() -> EgrGp { + EgrGp(0) + } + } + #[doc = "control register 2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr2Gp(pub u32); + impl Cr2Gp { + #[doc = "Capture/compare DMA selection"] + pub const fn ccds(&self) -> super::vals::Ccds { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Ccds(val as u8) + } + #[doc = "Capture/compare DMA selection"] + pub fn set_ccds(&mut self, val: super::vals::Ccds) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "Master mode selection"] + pub const fn mms(&self) -> super::vals::Mms { + let val = (self.0 >> 4usize) & 0x07; + super::vals::Mms(val as u8) + } + #[doc = "Master mode selection"] + pub fn set_mms(&mut self, val: super::vals::Mms) { + self.0 = (self.0 & !(0x07 << 4usize)) | (((val.0 as u32) & 0x07) << 4usize); + } + #[doc = "TI1 selection"] + pub const fn ti1s(&self) -> super::vals::Tis { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Tis(val as u8) + } + #[doc = "TI1 selection"] + pub fn set_ti1s(&mut self, val: super::vals::Tis) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + } + impl Default for Cr2Gp { + fn default() -> Cr2Gp { + Cr2Gp(0) + } + } + #[doc = "counter"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cnt16(pub u32); + impl Cnt16 { + #[doc = "counter value"] + pub const fn cnt(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "counter value"] + pub fn set_cnt(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Cnt16 { + fn default() -> Cnt16 { + Cnt16(0) + } + } + #[doc = "control register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr1Basic(pub u32); + impl Cr1Basic { + #[doc = "Counter enable"] + pub const fn cen(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Counter enable"] + pub fn set_cen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Update disable"] + pub const fn udis(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Update disable"] + pub fn set_udis(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Update request source"] + pub const fn urs(&self) -> super::vals::Urs { + let val = (self.0 >> 2usize) & 0x01; + super::vals::Urs(val as u8) + } + #[doc = "Update request source"] + pub fn set_urs(&mut self, val: super::vals::Urs) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize); + } + #[doc = "One-pulse mode"] + pub const fn opm(&self) -> super::vals::Opm { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Opm(val as u8) + } + #[doc = "One-pulse mode"] + pub fn set_opm(&mut self, val: super::vals::Opm) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "Auto-reload preload enable"] + pub const fn arpe(&self) -> super::vals::Arpe { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Arpe(val as u8) + } + #[doc = "Auto-reload preload enable"] + pub fn set_arpe(&mut self, val: super::vals::Arpe) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + } + impl Default for Cr1Basic { + fn default() -> Cr1Basic { + Cr1Basic(0) + } + } + #[doc = "repetition counter register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Rcr(pub u32); + impl Rcr { + #[doc = "Repetition counter value"] + pub const fn rep(&self) -> u8 { + let val = (self.0 >> 0usize) & 0xff; + val as u8 + } + #[doc = "Repetition counter value"] + pub fn set_rep(&mut self, val: u8) { + self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize); + } + } + impl Default for Rcr { + fn default() -> Rcr { + Rcr(0) + } + } + #[doc = "status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct SrAdv(pub u32); + impl SrAdv { + #[doc = "Update interrupt flag"] + pub const fn uif(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Update interrupt flag"] + pub fn set_uif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Capture/compare 1 interrupt flag"] + pub fn ccif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/compare 1 interrupt flag"] + pub fn set_ccif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 1usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "COM interrupt flag"] + pub const fn comif(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "COM interrupt flag"] + pub fn set_comif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Trigger interrupt flag"] + pub const fn tif(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Trigger interrupt flag"] + pub fn set_tif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Break interrupt flag"] + pub const fn bif(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Break interrupt flag"] + pub fn set_bif(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "Capture/Compare 1 overcapture flag"] + pub fn ccof(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Capture/Compare 1 overcapture flag"] + pub fn set_ccof(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 9usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for SrAdv { + fn default() -> SrAdv { + SrAdv(0) + } + } + } +} +pub mod dma_v2 { + use crate::generic::*; + #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"] + #[derive(Copy, Clone)] + pub struct St(pub *mut u8); + unsafe impl Send for St {} + unsafe impl Sync for St {} + impl St { + #[doc = "stream x configuration register"] + pub fn cr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "stream x number of data register"] + pub fn ndtr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "stream x peripheral address register"] + pub fn par(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "stream x memory 0 address register"] + pub fn m0ar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "stream x memory 1 address register"] + pub fn m1ar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "stream x FIFO control register"] + pub fn fcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + } + #[doc = "DMA controller"] + #[derive(Copy, Clone)] + pub struct Dma(pub *mut u8); + unsafe impl Send for Dma {} + unsafe impl Sync for Dma {} + impl Dma { + #[doc = "low interrupt status register"] + pub fn isr(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(0usize + n * 4usize)) } + } + #[doc = "low interrupt flag clear register"] + pub fn ifcr(self, n: usize) -> Reg { + assert!(n < 2usize); + unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) } + } + #[doc = "Stream cluster: S?CR, S?NDTR, S?M0AR, S?M1AR and S?FCR registers"] + pub fn st(self, n: usize) -> St { + assert!(n < 8usize); + unsafe { St(self.0.add(16usize + n * 24usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "stream x number of data register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ndtr(pub u32); + impl Ndtr { + #[doc = "Number of data items to transfer"] + pub const fn ndt(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "Number of data items to transfer"] + pub fn set_ndt(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Ndtr { + fn default() -> Ndtr { + Ndtr(0) + } + } + #[doc = "stream x FIFO control register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Fcr(pub u32); + impl Fcr { + #[doc = "FIFO threshold selection"] + pub const fn fth(&self) -> super::vals::Fth { + let val = (self.0 >> 0usize) & 0x03; + super::vals::Fth(val as u8) + } + #[doc = "FIFO threshold selection"] + pub fn set_fth(&mut self, val: super::vals::Fth) { + self.0 = (self.0 & !(0x03 << 0usize)) | (((val.0 as u32) & 0x03) << 0usize); + } + #[doc = "Direct mode disable"] + pub const fn dmdis(&self) -> super::vals::Dmdis { + let val = (self.0 >> 2usize) & 0x01; + super::vals::Dmdis(val as u8) + } + #[doc = "Direct mode disable"] + pub fn set_dmdis(&mut self, val: super::vals::Dmdis) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize); + } + #[doc = "FIFO status"] + pub const fn fs(&self) -> super::vals::Fs { + let val = (self.0 >> 3usize) & 0x07; + super::vals::Fs(val as u8) + } + #[doc = "FIFO status"] + pub fn set_fs(&mut self, val: super::vals::Fs) { + self.0 = (self.0 & !(0x07 << 3usize)) | (((val.0 as u32) & 0x07) << 3usize); + } + #[doc = "FIFO error interrupt enable"] + pub const fn feie(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "FIFO error interrupt enable"] + pub fn set_feie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + } + impl Default for Fcr { + fn default() -> Fcr { + Fcr(0) + } + } + #[doc = "stream x configuration register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr(pub u32); + impl Cr { + #[doc = "Stream enable / flag stream ready when read low"] + pub const fn en(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Stream enable / flag stream ready when read low"] + pub fn set_en(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Direct mode error interrupt enable"] + pub const fn dmeie(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Direct mode error interrupt enable"] + pub fn set_dmeie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Transfer error interrupt enable"] + pub const fn teie(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Transfer error interrupt enable"] + pub fn set_teie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Half transfer interrupt enable"] + pub const fn htie(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Half transfer interrupt enable"] + pub fn set_htie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "Transfer complete interrupt enable"] + pub const fn tcie(&self) -> bool { + let val = (self.0 >> 4usize) & 0x01; + val != 0 + } + #[doc = "Transfer complete interrupt enable"] + pub fn set_tcie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); + } + #[doc = "Peripheral flow controller"] + pub const fn pfctrl(&self) -> super::vals::Pfctrl { + let val = (self.0 >> 5usize) & 0x01; + super::vals::Pfctrl(val as u8) + } + #[doc = "Peripheral flow controller"] + pub fn set_pfctrl(&mut self, val: super::vals::Pfctrl) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize); + } + #[doc = "Data transfer direction"] + pub const fn dir(&self) -> super::vals::Dir { + let val = (self.0 >> 6usize) & 0x03; + super::vals::Dir(val as u8) + } + #[doc = "Data transfer direction"] + pub fn set_dir(&mut self, val: super::vals::Dir) { + self.0 = (self.0 & !(0x03 << 6usize)) | (((val.0 as u32) & 0x03) << 6usize); + } + #[doc = "Circular mode"] + pub const fn circ(&self) -> super::vals::Circ { + let val = (self.0 >> 8usize) & 0x01; + super::vals::Circ(val as u8) + } + #[doc = "Circular mode"] + pub fn set_circ(&mut self, val: super::vals::Circ) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val.0 as u32) & 0x01) << 8usize); + } + #[doc = "Peripheral increment mode"] + pub const fn pinc(&self) -> super::vals::Inc { + let val = (self.0 >> 9usize) & 0x01; + super::vals::Inc(val as u8) + } + #[doc = "Peripheral increment mode"] + pub fn set_pinc(&mut self, val: super::vals::Inc) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val.0 as u32) & 0x01) << 9usize); + } + #[doc = "Memory increment mode"] + pub const fn minc(&self) -> super::vals::Inc { + let val = (self.0 >> 10usize) & 0x01; + super::vals::Inc(val as u8) + } + #[doc = "Memory increment mode"] + pub fn set_minc(&mut self, val: super::vals::Inc) { + self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize); + } + #[doc = "Peripheral data size"] + pub const fn psize(&self) -> super::vals::Size { + let val = (self.0 >> 11usize) & 0x03; + super::vals::Size(val as u8) + } + #[doc = "Peripheral data size"] + pub fn set_psize(&mut self, val: super::vals::Size) { + self.0 = (self.0 & !(0x03 << 11usize)) | (((val.0 as u32) & 0x03) << 11usize); + } + #[doc = "Memory data size"] + pub const fn msize(&self) -> super::vals::Size { + let val = (self.0 >> 13usize) & 0x03; + super::vals::Size(val as u8) + } + #[doc = "Memory data size"] + pub fn set_msize(&mut self, val: super::vals::Size) { + self.0 = (self.0 & !(0x03 << 13usize)) | (((val.0 as u32) & 0x03) << 13usize); + } + #[doc = "Peripheral increment offset size"] + pub const fn pincos(&self) -> super::vals::Pincos { + let val = (self.0 >> 15usize) & 0x01; + super::vals::Pincos(val as u8) + } + #[doc = "Peripheral increment offset size"] + pub fn set_pincos(&mut self, val: super::vals::Pincos) { + self.0 = (self.0 & !(0x01 << 15usize)) | (((val.0 as u32) & 0x01) << 15usize); + } + #[doc = "Priority level"] + pub const fn pl(&self) -> super::vals::Pl { + let val = (self.0 >> 16usize) & 0x03; + super::vals::Pl(val as u8) + } + #[doc = "Priority level"] + pub fn set_pl(&mut self, val: super::vals::Pl) { + self.0 = (self.0 & !(0x03 << 16usize)) | (((val.0 as u32) & 0x03) << 16usize); + } + #[doc = "Double buffer mode"] + pub const fn dbm(&self) -> super::vals::Dbm { + let val = (self.0 >> 18usize) & 0x01; + super::vals::Dbm(val as u8) + } + #[doc = "Double buffer mode"] + pub fn set_dbm(&mut self, val: super::vals::Dbm) { + self.0 = (self.0 & !(0x01 << 18usize)) | (((val.0 as u32) & 0x01) << 18usize); + } + #[doc = "Current target (only in double buffer mode)"] + pub const fn ct(&self) -> super::vals::Ct { + let val = (self.0 >> 19usize) & 0x01; + super::vals::Ct(val as u8) + } + #[doc = "Current target (only in double buffer mode)"] + pub fn set_ct(&mut self, val: super::vals::Ct) { + self.0 = (self.0 & !(0x01 << 19usize)) | (((val.0 as u32) & 0x01) << 19usize); + } + #[doc = "Peripheral burst transfer configuration"] + pub const fn pburst(&self) -> super::vals::Burst { + let val = (self.0 >> 21usize) & 0x03; + super::vals::Burst(val as u8) + } + #[doc = "Peripheral burst transfer configuration"] + pub fn set_pburst(&mut self, val: super::vals::Burst) { + self.0 = (self.0 & !(0x03 << 21usize)) | (((val.0 as u32) & 0x03) << 21usize); + } + #[doc = "Memory burst transfer configuration"] + pub const fn mburst(&self) -> super::vals::Burst { + let val = (self.0 >> 23usize) & 0x03; + super::vals::Burst(val as u8) + } + #[doc = "Memory burst transfer configuration"] + pub fn set_mburst(&mut self, val: super::vals::Burst) { + self.0 = (self.0 & !(0x03 << 23usize)) | (((val.0 as u32) & 0x03) << 23usize); + } + #[doc = "Channel selection"] + pub const fn chsel(&self) -> u8 { + let val = (self.0 >> 25usize) & 0x0f; + val as u8 + } + #[doc = "Channel selection"] + pub fn set_chsel(&mut self, val: u8) { + self.0 = (self.0 & !(0x0f << 25usize)) | (((val as u32) & 0x0f) << 25usize); + } + } + impl Default for Cr { + fn default() -> Cr { + Cr(0) + } + } + #[doc = "low interrupt status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Isr(pub u32); + impl Isr { + #[doc = "Stream x FIFO error interrupt flag (x=3..0)"] + pub fn feif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x FIFO error interrupt flag (x=3..0)"] + pub fn set_feif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x direct mode error interrupt flag (x=3..0)"] + pub fn dmeif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x direct mode error interrupt flag (x=3..0)"] + pub fn set_dmeif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x transfer error interrupt flag (x=3..0)"] + pub fn teif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x transfer error interrupt flag (x=3..0)"] + pub fn set_teif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x half transfer interrupt flag (x=3..0)"] + pub fn htif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x half transfer interrupt flag (x=3..0)"] + pub fn set_htif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"] + pub fn tcif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x transfer complete interrupt flag (x = 3..0)"] + pub fn set_tcif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Isr { + fn default() -> Isr { + Isr(0) + } + } + #[doc = "low interrupt flag clear register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ifcr(pub u32); + impl Ifcr { + #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"] + pub fn cfeif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x clear FIFO error interrupt flag (x = 3..0)"] + pub fn set_cfeif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 0usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"] + pub fn cdmeif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x clear direct mode error interrupt flag (x = 3..0)"] + pub fn set_cdmeif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 2usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"] + pub fn cteif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x clear transfer error interrupt flag (x = 3..0)"] + pub fn set_cteif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 3usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"] + pub fn chtif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x clear half transfer interrupt flag (x = 3..0)"] + pub fn set_chtif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 4usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"] + pub fn ctcif(&self, n: usize) -> bool { + assert!(n < 4usize); + let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Stream x clear transfer complete interrupt flag (x = 3..0)"] + pub fn set_ctcif(&mut self, n: usize, val: bool) { + assert!(n < 4usize); + let offs = 5usize + ([0usize, 6usize, 16usize, 22usize][n] as usize); + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Ifcr { + fn default() -> Ifcr { + Ifcr(0) + } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Inc(pub u8); + impl Inc { + #[doc = "Address pointer is fixed"] + pub const FIXED: Self = Self(0); + #[doc = "Address pointer is incremented after each data transfer"] + pub const INCREMENTED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Pfctrl(pub u8); + impl Pfctrl { + #[doc = "The DMA is the flow controller"] + pub const DMA: Self = Self(0); + #[doc = "The peripheral is the flow controller"] + pub const PERIPHERAL: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Fth(pub u8); + impl Fth { + #[doc = "1/4 full FIFO"] + pub const QUARTER: Self = Self(0); + #[doc = "1/2 full FIFO"] + pub const HALF: Self = Self(0x01); + #[doc = "3/4 full FIFO"] + pub const THREEQUARTERS: Self = Self(0x02); + #[doc = "Full FIFO"] + pub const FULL: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Fs(pub u8); + impl Fs { + #[doc = "0 < fifo_level < 1/4"] + pub const QUARTER1: Self = Self(0); + #[doc = "1/4 <= fifo_level < 1/2"] + pub const QUARTER2: Self = Self(0x01); + #[doc = "1/2 <= fifo_level < 3/4"] + pub const QUARTER3: Self = Self(0x02); + #[doc = "3/4 <= fifo_level < full"] + pub const QUARTER4: Self = Self(0x03); + #[doc = "FIFO is empty"] + pub const EMPTY: Self = Self(0x04); + #[doc = "FIFO is full"] + pub const FULL: Self = Self(0x05); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Circ(pub u8); + impl Circ { + #[doc = "Circular mode disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "Circular mode enabled"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Dbm(pub u8); + impl Dbm { + #[doc = "No buffer switching at the end of transfer"] + pub const DISABLED: Self = Self(0); + #[doc = "Memory target switched at the end of the DMA transfer"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Size(pub u8); + impl Size { + #[doc = "Byte (8-bit)"] + pub const BITS8: Self = Self(0); + #[doc = "Half-word (16-bit)"] + pub const BITS16: Self = Self(0x01); + #[doc = "Word (32-bit)"] + pub const BITS32: Self = Self(0x02); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Dmdis(pub u8); + impl Dmdis { + #[doc = "Direct mode is enabled"] + pub const ENABLED: Self = Self(0); + #[doc = "Direct mode is disabled"] + pub const DISABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Pincos(pub u8); + impl Pincos { + #[doc = "The offset size for the peripheral address calculation is linked to the PSIZE"] + pub const PSIZE: Self = Self(0); + #[doc = "The offset size for the peripheral address calculation is fixed to 4 (32-bit alignment)"] + pub const FIXED4: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Burst(pub u8); + impl Burst { + #[doc = "Single transfer"] + pub const SINGLE: Self = Self(0); + #[doc = "Incremental burst of 4 beats"] + pub const INCR4: Self = Self(0x01); + #[doc = "Incremental burst of 8 beats"] + pub const INCR8: Self = Self(0x02); + #[doc = "Incremental burst of 16 beats"] + pub const INCR16: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Pl(pub u8); + impl Pl { + #[doc = "Low"] + pub const LOW: Self = Self(0); + #[doc = "Medium"] + pub const MEDIUM: Self = Self(0x01); + #[doc = "High"] + pub const HIGH: Self = Self(0x02); + #[doc = "Very high"] + pub const VERYHIGH: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Dir(pub u8); + impl Dir { + #[doc = "Peripheral-to-memory"] + pub const PERIPHERALTOMEMORY: Self = Self(0); + #[doc = "Memory-to-peripheral"] + pub const MEMORYTOPERIPHERAL: Self = Self(0x01); + #[doc = "Memory-to-memory"] + pub const MEMORYTOMEMORY: Self = Self(0x02); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ct(pub u8); + impl Ct { + #[doc = "The current target memory is Memory 0"] + pub const MEMORY0: Self = Self(0); + #[doc = "The current target memory is Memory 1"] + pub const MEMORY1: Self = Self(0x01); + } + } +} +pub mod dma_v1 { + use crate::generic::*; + #[doc = "DMA controller"] + #[derive(Copy, Clone)] + pub struct Dma(pub *mut u8); + unsafe impl Send for Dma {} + unsafe impl Sync for Dma {} + impl Dma { + #[doc = "DMA interrupt status register (DMA_ISR)"] + pub fn isr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "DMA interrupt flag clear register (DMA_IFCR)"] + pub fn ifcr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"] + pub fn ch(self, n: usize) -> Ch { + assert!(n < 7usize); + unsafe { Ch(self.0.add(8usize + n * 20usize)) } + } + } + #[doc = "Channel cluster: CCR?, CNDTR?, CPAR?, and CMAR? registers"] + #[derive(Copy, Clone)] + pub struct Ch(pub *mut u8); + unsafe impl Send for Ch {} + unsafe impl Sync for Ch {} + impl Ch { + #[doc = "DMA channel configuration register (DMA_CCR)"] + pub fn cr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "DMA channel 1 number of data register"] + pub fn ndtr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "DMA channel 1 peripheral address register"] + pub fn par(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "DMA channel 1 memory address register"] + pub fn mar(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Circ(pub u8); + impl Circ { + #[doc = "Circular buffer disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "Circular buffer enabled"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Pl(pub u8); + impl Pl { + #[doc = "Low priority"] + pub const LOW: Self = Self(0); + #[doc = "Medium priority"] + pub const MEDIUM: Self = Self(0x01); + #[doc = "High priority"] + pub const HIGH: Self = Self(0x02); + #[doc = "Very high priority"] + pub const VERYHIGH: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Inc(pub u8); + impl Inc { + #[doc = "Increment mode disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "Increment mode enabled"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Memmem(pub u8); + impl Memmem { + #[doc = "Memory to memory mode disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "Memory to memory mode enabled"] + pub const ENABLED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Dir(pub u8); + impl Dir { + #[doc = "Read from peripheral"] + pub const FROMPERIPHERAL: Self = Self(0); + #[doc = "Read from memory"] + pub const FROMMEMORY: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Size(pub u8); + impl Size { + #[doc = "8-bit size"] + pub const BITS8: Self = Self(0); + #[doc = "16-bit size"] + pub const BITS16: Self = Self(0x01); + #[doc = "32-bit size"] + pub const BITS32: Self = Self(0x02); + } + } + pub mod regs { + use crate::generic::*; + #[doc = "DMA interrupt flag clear register (DMA_IFCR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ifcr(pub u32); + impl Ifcr { + #[doc = "Channel 1 Global interrupt clear"] + pub fn cgif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Global interrupt clear"] + pub fn set_cgif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Transfer Complete clear"] + pub fn ctcif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 1usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Transfer Complete clear"] + pub fn set_ctcif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 1usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Half Transfer clear"] + pub fn chtif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 2usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Half Transfer clear"] + pub fn set_chtif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 2usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Transfer Error clear"] + pub fn cteif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 3usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Transfer Error clear"] + pub fn set_cteif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 3usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Ifcr { + fn default() -> Ifcr { + Ifcr(0) + } + } + #[doc = "DMA channel configuration register (DMA_CCR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr(pub u32); + impl Cr { + #[doc = "Channel enable"] + pub const fn en(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Channel enable"] + pub fn set_en(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Transfer complete interrupt enable"] + pub const fn tcie(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Transfer complete interrupt enable"] + pub fn set_tcie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Half Transfer interrupt enable"] + pub const fn htie(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Half Transfer interrupt enable"] + pub fn set_htie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Transfer error interrupt enable"] + pub const fn teie(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Transfer error interrupt enable"] + pub fn set_teie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "Data transfer direction"] + pub const fn dir(&self) -> super::vals::Dir { + let val = (self.0 >> 4usize) & 0x01; + super::vals::Dir(val as u8) + } + #[doc = "Data transfer direction"] + pub fn set_dir(&mut self, val: super::vals::Dir) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val.0 as u32) & 0x01) << 4usize); + } + #[doc = "Circular mode"] + pub const fn circ(&self) -> super::vals::Circ { + let val = (self.0 >> 5usize) & 0x01; + super::vals::Circ(val as u8) + } + #[doc = "Circular mode"] + pub fn set_circ(&mut self, val: super::vals::Circ) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize); + } + #[doc = "Peripheral increment mode"] + pub const fn pinc(&self) -> super::vals::Inc { + let val = (self.0 >> 6usize) & 0x01; + super::vals::Inc(val as u8) + } + #[doc = "Peripheral increment mode"] + pub fn set_pinc(&mut self, val: super::vals::Inc) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val.0 as u32) & 0x01) << 6usize); + } + #[doc = "Memory increment mode"] + pub const fn minc(&self) -> super::vals::Inc { + let val = (self.0 >> 7usize) & 0x01; + super::vals::Inc(val as u8) + } + #[doc = "Memory increment mode"] + pub fn set_minc(&mut self, val: super::vals::Inc) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val.0 as u32) & 0x01) << 7usize); + } + #[doc = "Peripheral size"] + pub const fn psize(&self) -> super::vals::Size { + let val = (self.0 >> 8usize) & 0x03; + super::vals::Size(val as u8) + } + #[doc = "Peripheral size"] + pub fn set_psize(&mut self, val: super::vals::Size) { + self.0 = (self.0 & !(0x03 << 8usize)) | (((val.0 as u32) & 0x03) << 8usize); + } + #[doc = "Memory size"] + pub const fn msize(&self) -> super::vals::Size { + let val = (self.0 >> 10usize) & 0x03; + super::vals::Size(val as u8) + } + #[doc = "Memory size"] + pub fn set_msize(&mut self, val: super::vals::Size) { + self.0 = (self.0 & !(0x03 << 10usize)) | (((val.0 as u32) & 0x03) << 10usize); + } + #[doc = "Channel Priority level"] + pub const fn pl(&self) -> super::vals::Pl { + let val = (self.0 >> 12usize) & 0x03; + super::vals::Pl(val as u8) + } + #[doc = "Channel Priority level"] + pub fn set_pl(&mut self, val: super::vals::Pl) { + self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); + } + #[doc = "Memory to memory mode"] + pub const fn mem2mem(&self) -> super::vals::Memmem { + let val = (self.0 >> 14usize) & 0x01; + super::vals::Memmem(val as u8) + } + #[doc = "Memory to memory mode"] + pub fn set_mem2mem(&mut self, val: super::vals::Memmem) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val.0 as u32) & 0x01) << 14usize); + } + } + impl Default for Cr { + fn default() -> Cr { + Cr(0) + } + } + #[doc = "DMA channel 1 number of data register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ndtr(pub u32); + impl Ndtr { + #[doc = "Number of data to transfer"] + pub const fn ndt(&self) -> u16 { + let val = (self.0 >> 0usize) & 0xffff; + val as u16 + } + #[doc = "Number of data to transfer"] + pub fn set_ndt(&mut self, val: u16) { + self.0 = (self.0 & !(0xffff << 0usize)) | (((val as u32) & 0xffff) << 0usize); + } + } + impl Default for Ndtr { + fn default() -> Ndtr { + Ndtr(0) + } + } + #[doc = "DMA interrupt status register (DMA_ISR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Isr(pub u32); + impl Isr { + #[doc = "Channel 1 Global interrupt flag"] + pub fn gif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Global interrupt flag"] + pub fn set_gif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Transfer Complete flag"] + pub fn tcif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 1usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Transfer Complete flag"] + pub fn set_tcif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 1usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Half Transfer Complete flag"] + pub fn htif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 2usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Half Transfer Complete flag"] + pub fn set_htif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 2usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + #[doc = "Channel 1 Transfer Error flag"] + pub fn teif(&self, n: usize) -> bool { + assert!(n < 7usize); + let offs = 3usize + n * 4usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Channel 1 Transfer Error flag"] + pub fn set_teif(&mut self, n: usize, val: bool) { + assert!(n < 7usize); + let offs = 3usize + n * 4usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Isr { + fn default() -> Isr { + Isr(0) + } + } + } +} +pub mod rng_v1 { + use crate::generic::*; + #[doc = "Random number generator"] + #[derive(Copy, Clone)] + pub struct Rng(pub *mut u8); + unsafe impl Send for Rng {} + unsafe impl Sync for Rng {} + impl Rng { + #[doc = "control register"] + pub fn cr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "data register"] + pub fn dr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Sr(pub u32); + impl Sr { + #[doc = "Data ready"] + pub const fn drdy(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Data ready"] + pub fn set_drdy(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Clock error current status"] + pub const fn cecs(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Clock error current status"] + pub fn set_cecs(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Seed error current status"] + pub const fn secs(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Seed error current status"] + pub fn set_secs(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Clock error interrupt status"] + pub const fn ceis(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Clock error interrupt status"] + pub fn set_ceis(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Seed error interrupt status"] + pub const fn seis(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Seed error interrupt status"] + pub fn set_seis(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + } + impl Default for Sr { + fn default() -> Sr { + Sr(0) + } + } + #[doc = "control register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr(pub u32); + impl Cr { + #[doc = "Random number generator enable"] + pub const fn rngen(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Random number generator enable"] + pub fn set_rngen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Interrupt enable"] + pub const fn ie(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Interrupt enable"] + pub fn set_ie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + } + impl Default for Cr { + fn default() -> Cr { + Cr(0) + } + } + } +} +pub mod exti_v1 { + use crate::generic::*; + #[doc = "External interrupt/event controller"] + #[derive(Copy, Clone)] + pub struct Exti(pub *mut u8); + unsafe impl Send for Exti {} + unsafe impl Sync for Exti {} + impl Exti { + #[doc = "Interrupt mask register (EXTI_IMR)"] + pub fn imr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "Event mask register (EXTI_EMR)"] + pub fn emr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "Rising Trigger selection register (EXTI_RTSR)"] + pub fn rtsr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "Falling Trigger selection register (EXTI_FTSR)"] + pub fn ftsr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "Software interrupt event register (EXTI_SWIER)"] + pub fn swier(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "Pending register (EXTI_PR)"] + pub fn pr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "Software interrupt event register (EXTI_SWIER)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Swier(pub u32); + impl Swier { + #[doc = "Software Interrupt on line 0"] + pub fn swier(&self, n: usize) -> bool { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Software Interrupt on line 0"] + pub fn set_swier(&mut self, n: usize, val: bool) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Swier { + fn default() -> Swier { + Swier(0) + } + } + #[doc = "Pending register (EXTI_PR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Pr(pub u32); + impl Pr { + #[doc = "Pending bit 0"] + pub fn pr(&self, n: usize) -> bool { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "Pending bit 0"] + pub fn set_pr(&mut self, n: usize, val: bool) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Pr { + fn default() -> Pr { + Pr(0) + } + } + #[doc = "Falling Trigger selection register (EXTI_FTSR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Ftsr(pub u32); + impl Ftsr { + #[doc = "Falling trigger event configuration of line 0"] + pub fn tr(&self, n: usize) -> super::vals::Tr { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Tr(val as u8) + } + #[doc = "Falling trigger event configuration of line 0"] + pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Ftsr { + fn default() -> Ftsr { + Ftsr(0) + } + } + #[doc = "Event mask register (EXTI_EMR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Emr(pub u32); + impl Emr { + #[doc = "Event Mask on line 0"] + pub fn mr(&self, n: usize) -> super::vals::Mr { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Mr(val as u8) + } + #[doc = "Event Mask on line 0"] + pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Emr { + fn default() -> Emr { + Emr(0) + } + } + #[doc = "Interrupt mask register (EXTI_IMR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Imr(pub u32); + impl Imr { + #[doc = "Interrupt Mask on line 0"] + pub fn mr(&self, n: usize) -> super::vals::Mr { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Mr(val as u8) + } + #[doc = "Interrupt Mask on line 0"] + pub fn set_mr(&mut self, n: usize, val: super::vals::Mr) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Imr { + fn default() -> Imr { + Imr(0) + } + } + #[doc = "Rising Trigger selection register (EXTI_RTSR)"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Rtsr(pub u32); + impl Rtsr { + #[doc = "Rising trigger event configuration of line 0"] + pub fn tr(&self, n: usize) -> super::vals::Tr { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + super::vals::Tr(val as u8) + } + #[doc = "Rising trigger event configuration of line 0"] + pub fn set_tr(&mut self, n: usize, val: super::vals::Tr) { + assert!(n < 23usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val.0 as u32) & 0x01) << offs); + } + } + impl Default for Rtsr { + fn default() -> Rtsr { + Rtsr(0) + } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Prw(pub u8); + impl Prw { + #[doc = "Clears pending bit"] + pub const CLEAR: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Swierw(pub u8); + impl Swierw { + #[doc = "Generates an interrupt request"] + pub const PEND: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Mr(pub u8); + impl Mr { + #[doc = "Interrupt request line is masked"] + pub const MASKED: Self = Self(0); + #[doc = "Interrupt request line is unmasked"] + pub const UNMASKED: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Prr(pub u8); + impl Prr { + #[doc = "No trigger request occurred"] + pub const NOTPENDING: Self = Self(0); + #[doc = "Selected trigger request occurred"] + pub const PENDING: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Tr(pub u8); + impl Tr { + #[doc = "Falling edge trigger is disabled"] + pub const DISABLED: Self = Self(0); + #[doc = "Falling edge trigger is enabled"] + pub const ENABLED: Self = Self(0x01); + } + } +} +pub mod syscfg_l4 { + use crate::generic::*; + #[doc = "System configuration controller"] + #[derive(Copy, Clone)] + pub struct Syscfg(pub *mut u8); + unsafe impl Send for Syscfg {} + unsafe impl Sync for Syscfg {} + impl Syscfg { + #[doc = "memory remap register"] + pub fn memrmp(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "configuration register 1"] + pub fn cfgr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "external interrupt configuration register 1"] + pub fn exticr(self, n: usize) -> Reg { + assert!(n < 4usize); + unsafe { Reg::from_ptr(self.0.add(8usize + n * 4usize)) } + } + #[doc = "SCSR"] + pub fn scsr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(24usize)) } + } + #[doc = "CFGR2"] + pub fn cfgr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(28usize)) } + } + #[doc = "SWPR"] + pub fn swpr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(32usize)) } + } + #[doc = "SKR"] + pub fn skr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(36usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "CFGR2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cfgr2(pub u32); + impl Cfgr2 { + #[doc = "Cortex LOCKUP (Hardfault) output enable bit"] + pub const fn cll(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Cortex LOCKUP (Hardfault) output enable bit"] + pub fn set_cll(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "SRAM2 parity lock bit"] + pub const fn spl(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "SRAM2 parity lock bit"] + pub fn set_spl(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "PVD lock enable bit"] + pub const fn pvdl(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "PVD lock enable bit"] + pub fn set_pvdl(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "ECC Lock"] + pub const fn eccl(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "ECC Lock"] + pub fn set_eccl(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "SRAM2 parity error flag"] + pub const fn spf(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "SRAM2 parity error flag"] + pub fn set_spf(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + } + impl Default for Cfgr2 { + fn default() -> Cfgr2 { + Cfgr2(0) + } + } + #[doc = "memory remap register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Memrmp(pub u32); + impl Memrmp { + #[doc = "Memory mapping selection"] + pub const fn mem_mode(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x07; + val as u8 + } + #[doc = "Memory mapping selection"] + pub fn set_mem_mode(&mut self, val: u8) { + self.0 = (self.0 & !(0x07 << 0usize)) | (((val as u32) & 0x07) << 0usize); + } + #[doc = "QUADSPI memory mapping swap"] + pub const fn qfs(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "QUADSPI memory mapping swap"] + pub fn set_qfs(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "Flash Bank mode selection"] + pub const fn fb_mode(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Flash Bank mode selection"] + pub fn set_fb_mode(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + } + impl Default for Memrmp { + fn default() -> Memrmp { + Memrmp(0) + } + } + #[doc = "SCSR"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Scsr(pub u32); + impl Scsr { + #[doc = "SRAM2 Erase"] + pub const fn sram2er(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "SRAM2 Erase"] + pub fn set_sram2er(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "SRAM2 busy by erase operation"] + pub const fn sram2bsy(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "SRAM2 busy by erase operation"] + pub fn set_sram2bsy(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + } + impl Default for Scsr { + fn default() -> Scsr { + Scsr(0) + } + } + #[doc = "external interrupt configuration register 4"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Exticr(pub u32); + impl Exticr { + #[doc = "EXTI12 configuration bits"] + pub fn exti(&self, n: usize) -> u8 { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + let val = (self.0 >> offs) & 0x0f; + val as u8 + } + #[doc = "EXTI12 configuration bits"] + pub fn set_exti(&mut self, n: usize, val: u8) { + assert!(n < 4usize); + let offs = 0usize + n * 4usize; + self.0 = (self.0 & !(0x0f << offs)) | (((val as u32) & 0x0f) << offs); + } + } + impl Default for Exticr { + fn default() -> Exticr { + Exticr(0) + } + } + #[doc = "configuration register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cfgr1(pub u32); + impl Cfgr1 { + #[doc = "Firewall disable"] + pub const fn fwdis(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Firewall disable"] + pub fn set_fwdis(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "I/O analog switch voltage booster enable"] + pub const fn boosten(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "I/O analog switch voltage booster enable"] + pub fn set_boosten(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB6"] + pub const fn i2c_pb6_fmp(&self) -> bool { + let val = (self.0 >> 16usize) & 0x01; + val != 0 + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB6"] + pub fn set_i2c_pb6_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 16usize)) | (((val as u32) & 0x01) << 16usize); + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB7"] + pub const fn i2c_pb7_fmp(&self) -> bool { + let val = (self.0 >> 17usize) & 0x01; + val != 0 + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB7"] + pub fn set_i2c_pb7_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 17usize)) | (((val as u32) & 0x01) << 17usize); + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB8"] + pub const fn i2c_pb8_fmp(&self) -> bool { + let val = (self.0 >> 18usize) & 0x01; + val != 0 + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB8"] + pub fn set_i2c_pb8_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 18usize)) | (((val as u32) & 0x01) << 18usize); + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB9"] + pub const fn i2c_pb9_fmp(&self) -> bool { + let val = (self.0 >> 19usize) & 0x01; + val != 0 + } + #[doc = "Fast-mode Plus (Fm+) driving capability activation on PB9"] + pub fn set_i2c_pb9_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 19usize)) | (((val as u32) & 0x01) << 19usize); + } + #[doc = "I2C1 Fast-mode Plus driving capability activation"] + pub const fn i2c1_fmp(&self) -> bool { + let val = (self.0 >> 20usize) & 0x01; + val != 0 + } + #[doc = "I2C1 Fast-mode Plus driving capability activation"] + pub fn set_i2c1_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 20usize)) | (((val as u32) & 0x01) << 20usize); + } + #[doc = "I2C2 Fast-mode Plus driving capability activation"] + pub const fn i2c2_fmp(&self) -> bool { + let val = (self.0 >> 21usize) & 0x01; + val != 0 + } + #[doc = "I2C2 Fast-mode Plus driving capability activation"] + pub fn set_i2c2_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 21usize)) | (((val as u32) & 0x01) << 21usize); + } + #[doc = "I2C3 Fast-mode Plus driving capability activation"] + pub const fn i2c3_fmp(&self) -> bool { + let val = (self.0 >> 22usize) & 0x01; + val != 0 + } + #[doc = "I2C3 Fast-mode Plus driving capability activation"] + pub fn set_i2c3_fmp(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 22usize)) | (((val as u32) & 0x01) << 22usize); + } + #[doc = "Floating Point Unit interrupts enable bits"] + pub const fn fpu_ie(&self) -> u8 { + let val = (self.0 >> 26usize) & 0x3f; + val as u8 + } + #[doc = "Floating Point Unit interrupts enable bits"] + pub fn set_fpu_ie(&mut self, val: u8) { + self.0 = (self.0 & !(0x3f << 26usize)) | (((val as u32) & 0x3f) << 26usize); + } + } + impl Default for Cfgr1 { + fn default() -> Cfgr1 { + Cfgr1(0) + } + } + #[doc = "SWPR"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Swpr(pub u32); + impl Swpr { + #[doc = "SRAWM2 write protection."] + pub fn pwp(&self, n: usize) -> bool { + assert!(n < 32usize); + let offs = 0usize + n * 1usize; + let val = (self.0 >> offs) & 0x01; + val != 0 + } + #[doc = "SRAWM2 write protection."] + pub fn set_pwp(&mut self, n: usize, val: bool) { + assert!(n < 32usize); + let offs = 0usize + n * 1usize; + self.0 = (self.0 & !(0x01 << offs)) | (((val as u32) & 0x01) << offs); + } + } + impl Default for Swpr { + fn default() -> Swpr { + Swpr(0) + } + } + #[doc = "SKR"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Skr(pub u32); + impl Skr { + #[doc = "SRAM2 write protection key for software erase"] + pub const fn key(&self) -> u8 { + let val = (self.0 >> 0usize) & 0xff; + val as u8 + } + #[doc = "SRAM2 write protection key for software erase"] + pub fn set_key(&mut self, val: u8) { + self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize); + } + } + impl Default for Skr { + fn default() -> Skr { + Skr(0) + } + } + } +} +pub mod usart_v1 { + use crate::generic::*; + #[doc = "Universal asynchronous receiver transmitter"] + #[derive(Copy, Clone)] + pub struct Uart(pub *mut u8); + unsafe impl Send for Uart {} + unsafe impl Sync for Uart {} + impl Uart { + #[doc = "Status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "Data register"] + pub fn dr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "Baud rate register"] + pub fn brr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "Control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "Control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "Control register 3"] + pub fn cr3(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + } + #[doc = "Universal synchronous asynchronous receiver transmitter"] + #[derive(Copy, Clone)] + pub struct Usart(pub *mut u8); + unsafe impl Send for Usart {} + unsafe impl Sync for Usart {} + impl Usart { + #[doc = "Status register"] + pub fn sr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(0usize)) } + } + #[doc = "Data register"] + pub fn dr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(4usize)) } + } + #[doc = "Baud rate register"] + pub fn brr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(8usize)) } + } + #[doc = "Control register 1"] + pub fn cr1(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(12usize)) } + } + #[doc = "Control register 2"] + pub fn cr2(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(16usize)) } + } + #[doc = "Control register 3"] + pub fn cr3(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(20usize)) } + } + #[doc = "Guard time and prescaler register"] + pub fn gtpr(self) -> Reg { + unsafe { Reg::from_ptr(self.0.add(24usize)) } + } + } + pub mod regs { + use crate::generic::*; + #[doc = "Status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct SrUsart(pub u32); + impl SrUsart { + #[doc = "Parity error"] + pub const fn pe(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Parity error"] + pub fn set_pe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Framing error"] + pub const fn fe(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Framing error"] + pub fn set_fe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Noise error flag"] + pub const fn ne(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Noise error flag"] + pub fn set_ne(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Overrun error"] + pub const fn ore(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Overrun error"] + pub fn set_ore(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "IDLE line detected"] + pub const fn idle(&self) -> bool { + let val = (self.0 >> 4usize) & 0x01; + val != 0 + } + #[doc = "IDLE line detected"] + pub fn set_idle(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); + } + #[doc = "Read data register not empty"] + pub const fn rxne(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Read data register not empty"] + pub fn set_rxne(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Transmission complete"] + pub const fn tc(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Transmission complete"] + pub fn set_tc(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Transmit data register empty"] + pub const fn txe(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Transmit data register empty"] + pub fn set_txe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "LIN break detection flag"] + pub const fn lbd(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "LIN break detection flag"] + pub fn set_lbd(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "CTS flag"] + pub const fn cts(&self) -> bool { + let val = (self.0 >> 9usize) & 0x01; + val != 0 + } + #[doc = "CTS flag"] + pub fn set_cts(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); + } + } + impl Default for SrUsart { + fn default() -> SrUsart { + SrUsart(0) + } + } + #[doc = "Baud rate register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Brr(pub u32); + impl Brr { + #[doc = "fraction of USARTDIV"] + pub const fn div_fraction(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x0f; + val as u8 + } + #[doc = "fraction of USARTDIV"] + pub fn set_div_fraction(&mut self, val: u8) { + self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); + } + #[doc = "mantissa of USARTDIV"] + pub const fn div_mantissa(&self) -> u16 { + let val = (self.0 >> 4usize) & 0x0fff; + val as u16 + } + #[doc = "mantissa of USARTDIV"] + pub fn set_div_mantissa(&mut self, val: u16) { + self.0 = (self.0 & !(0x0fff << 4usize)) | (((val as u32) & 0x0fff) << 4usize); + } + } + impl Default for Brr { + fn default() -> Brr { + Brr(0) + } + } + #[doc = "Status register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Sr(pub u32); + impl Sr { + #[doc = "Parity error"] + pub const fn pe(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Parity error"] + pub fn set_pe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "Framing error"] + pub const fn fe(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "Framing error"] + pub fn set_fe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "Noise error flag"] + pub const fn ne(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Noise error flag"] + pub fn set_ne(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Overrun error"] + pub const fn ore(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Overrun error"] + pub fn set_ore(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "IDLE line detected"] + pub const fn idle(&self) -> bool { + let val = (self.0 >> 4usize) & 0x01; + val != 0 + } + #[doc = "IDLE line detected"] + pub fn set_idle(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); + } + #[doc = "Read data register not empty"] + pub const fn rxne(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Read data register not empty"] + pub fn set_rxne(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Transmission complete"] + pub const fn tc(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Transmission complete"] + pub fn set_tc(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Transmit data register empty"] + pub const fn txe(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "Transmit data register empty"] + pub fn set_txe(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "LIN break detection flag"] + pub const fn lbd(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "LIN break detection flag"] + pub fn set_lbd(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + } + impl Default for Sr { + fn default() -> Sr { + Sr(0) + } + } + #[doc = "Control register 1"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr1(pub u32); + impl Cr1 { + #[doc = "Send break"] + pub const fn sbk(&self) -> super::vals::Sbk { + let val = (self.0 >> 0usize) & 0x01; + super::vals::Sbk(val as u8) + } + #[doc = "Send break"] + pub fn set_sbk(&mut self, val: super::vals::Sbk) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val.0 as u32) & 0x01) << 0usize); + } + #[doc = "Receiver wakeup"] + pub const fn rwu(&self) -> super::vals::Rwu { + let val = (self.0 >> 1usize) & 0x01; + super::vals::Rwu(val as u8) + } + #[doc = "Receiver wakeup"] + pub fn set_rwu(&mut self, val: super::vals::Rwu) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val.0 as u32) & 0x01) << 1usize); + } + #[doc = "Receiver enable"] + pub const fn re(&self) -> bool { + let val = (self.0 >> 2usize) & 0x01; + val != 0 + } + #[doc = "Receiver enable"] + pub fn set_re(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val as u32) & 0x01) << 2usize); + } + #[doc = "Transmitter enable"] + pub const fn te(&self) -> bool { + let val = (self.0 >> 3usize) & 0x01; + val != 0 + } + #[doc = "Transmitter enable"] + pub fn set_te(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val as u32) & 0x01) << 3usize); + } + #[doc = "IDLE interrupt enable"] + pub const fn idleie(&self) -> bool { + let val = (self.0 >> 4usize) & 0x01; + val != 0 + } + #[doc = "IDLE interrupt enable"] + pub fn set_idleie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); + } + #[doc = "RXNE interrupt enable"] + pub const fn rxneie(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "RXNE interrupt enable"] + pub fn set_rxneie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "Transmission complete interrupt enable"] + pub const fn tcie(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "Transmission complete interrupt enable"] + pub fn set_tcie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "TXE interrupt enable"] + pub const fn txeie(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "TXE interrupt enable"] + pub fn set_txeie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "PE interrupt enable"] + pub const fn peie(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "PE interrupt enable"] + pub fn set_peie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "Parity selection"] + pub const fn ps(&self) -> super::vals::Ps { + let val = (self.0 >> 9usize) & 0x01; + super::vals::Ps(val as u8) + } + #[doc = "Parity selection"] + pub fn set_ps(&mut self, val: super::vals::Ps) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val.0 as u32) & 0x01) << 9usize); + } + #[doc = "Parity control enable"] + pub const fn pce(&self) -> bool { + let val = (self.0 >> 10usize) & 0x01; + val != 0 + } + #[doc = "Parity control enable"] + pub fn set_pce(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); + } + #[doc = "Wakeup method"] + pub const fn wake(&self) -> super::vals::Wake { + let val = (self.0 >> 11usize) & 0x01; + super::vals::Wake(val as u8) + } + #[doc = "Wakeup method"] + pub fn set_wake(&mut self, val: super::vals::Wake) { + self.0 = (self.0 & !(0x01 << 11usize)) | (((val.0 as u32) & 0x01) << 11usize); + } + #[doc = "Word length"] + pub const fn m(&self) -> super::vals::M { + let val = (self.0 >> 12usize) & 0x01; + super::vals::M(val as u8) + } + #[doc = "Word length"] + pub fn set_m(&mut self, val: super::vals::M) { + self.0 = (self.0 & !(0x01 << 12usize)) | (((val.0 as u32) & 0x01) << 12usize); + } + #[doc = "USART enable"] + pub const fn ue(&self) -> bool { + let val = (self.0 >> 13usize) & 0x01; + val != 0 + } + #[doc = "USART enable"] + pub fn set_ue(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 13usize)) | (((val as u32) & 0x01) << 13usize); + } + } + impl Default for Cr1 { + fn default() -> Cr1 { + Cr1(0) + } + } + #[doc = "Control register 3"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr3Usart(pub u32); + impl Cr3Usart { + #[doc = "Error interrupt enable"] + pub const fn eie(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Error interrupt enable"] + pub fn set_eie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "IrDA mode enable"] + pub const fn iren(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "IrDA mode enable"] + pub fn set_iren(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "IrDA low-power"] + pub const fn irlp(&self) -> super::vals::Irlp { + let val = (self.0 >> 2usize) & 0x01; + super::vals::Irlp(val as u8) + } + #[doc = "IrDA low-power"] + pub fn set_irlp(&mut self, val: super::vals::Irlp) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize); + } + #[doc = "Half-duplex selection"] + pub const fn hdsel(&self) -> super::vals::Hdsel { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Hdsel(val as u8) + } + #[doc = "Half-duplex selection"] + pub fn set_hdsel(&mut self, val: super::vals::Hdsel) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "Smartcard NACK enable"] + pub const fn nack(&self) -> bool { + let val = (self.0 >> 4usize) & 0x01; + val != 0 + } + #[doc = "Smartcard NACK enable"] + pub fn set_nack(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 4usize)) | (((val as u32) & 0x01) << 4usize); + } + #[doc = "Smartcard mode enable"] + pub const fn scen(&self) -> bool { + let val = (self.0 >> 5usize) & 0x01; + val != 0 + } + #[doc = "Smartcard mode enable"] + pub fn set_scen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val as u32) & 0x01) << 5usize); + } + #[doc = "DMA enable receiver"] + pub const fn dmar(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "DMA enable receiver"] + pub fn set_dmar(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "DMA enable transmitter"] + pub const fn dmat(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "DMA enable transmitter"] + pub fn set_dmat(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + #[doc = "RTS enable"] + pub const fn rtse(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "RTS enable"] + pub fn set_rtse(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "CTS enable"] + pub const fn ctse(&self) -> bool { + let val = (self.0 >> 9usize) & 0x01; + val != 0 + } + #[doc = "CTS enable"] + pub fn set_ctse(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val as u32) & 0x01) << 9usize); + } + #[doc = "CTS interrupt enable"] + pub const fn ctsie(&self) -> bool { + let val = (self.0 >> 10usize) & 0x01; + val != 0 + } + #[doc = "CTS interrupt enable"] + pub fn set_ctsie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 10usize)) | (((val as u32) & 0x01) << 10usize); + } + } + impl Default for Cr3Usart { + fn default() -> Cr3Usart { + Cr3Usart(0) + } + } + #[doc = "Control register 2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr2Usart(pub u32); + impl Cr2Usart { + #[doc = "Address of the USART node"] + pub const fn add(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x0f; + val as u8 + } + #[doc = "Address of the USART node"] + pub fn set_add(&mut self, val: u8) { + self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); + } + #[doc = "lin break detection length"] + pub const fn lbdl(&self) -> super::vals::Lbdl { + let val = (self.0 >> 5usize) & 0x01; + super::vals::Lbdl(val as u8) + } + #[doc = "lin break detection length"] + pub fn set_lbdl(&mut self, val: super::vals::Lbdl) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize); + } + #[doc = "LIN break detection interrupt enable"] + pub const fn lbdie(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "LIN break detection interrupt enable"] + pub fn set_lbdie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "Last bit clock pulse"] + pub const fn lbcl(&self) -> bool { + let val = (self.0 >> 8usize) & 0x01; + val != 0 + } + #[doc = "Last bit clock pulse"] + pub fn set_lbcl(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 8usize)) | (((val as u32) & 0x01) << 8usize); + } + #[doc = "Clock phase"] + pub const fn cpha(&self) -> super::vals::Cpha { + let val = (self.0 >> 9usize) & 0x01; + super::vals::Cpha(val as u8) + } + #[doc = "Clock phase"] + pub fn set_cpha(&mut self, val: super::vals::Cpha) { + self.0 = (self.0 & !(0x01 << 9usize)) | (((val.0 as u32) & 0x01) << 9usize); + } + #[doc = "Clock polarity"] + pub const fn cpol(&self) -> super::vals::Cpol { + let val = (self.0 >> 10usize) & 0x01; + super::vals::Cpol(val as u8) + } + #[doc = "Clock polarity"] + pub fn set_cpol(&mut self, val: super::vals::Cpol) { + self.0 = (self.0 & !(0x01 << 10usize)) | (((val.0 as u32) & 0x01) << 10usize); + } + #[doc = "Clock enable"] + pub const fn clken(&self) -> bool { + let val = (self.0 >> 11usize) & 0x01; + val != 0 + } + #[doc = "Clock enable"] + pub fn set_clken(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 11usize)) | (((val as u32) & 0x01) << 11usize); + } + #[doc = "STOP bits"] + pub const fn stop(&self) -> super::vals::Stop { + let val = (self.0 >> 12usize) & 0x03; + super::vals::Stop(val as u8) + } + #[doc = "STOP bits"] + pub fn set_stop(&mut self, val: super::vals::Stop) { + self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); + } + #[doc = "LIN mode enable"] + pub const fn linen(&self) -> bool { + let val = (self.0 >> 14usize) & 0x01; + val != 0 + } + #[doc = "LIN mode enable"] + pub fn set_linen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); + } + } + impl Default for Cr2Usart { + fn default() -> Cr2Usart { + Cr2Usart(0) + } + } + #[doc = "Control register 3"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr3(pub u32); + impl Cr3 { + #[doc = "Error interrupt enable"] + pub const fn eie(&self) -> bool { + let val = (self.0 >> 0usize) & 0x01; + val != 0 + } + #[doc = "Error interrupt enable"] + pub fn set_eie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 0usize)) | (((val as u32) & 0x01) << 0usize); + } + #[doc = "IrDA mode enable"] + pub const fn iren(&self) -> bool { + let val = (self.0 >> 1usize) & 0x01; + val != 0 + } + #[doc = "IrDA mode enable"] + pub fn set_iren(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 1usize)) | (((val as u32) & 0x01) << 1usize); + } + #[doc = "IrDA low-power"] + pub const fn irlp(&self) -> super::vals::Irlp { + let val = (self.0 >> 2usize) & 0x01; + super::vals::Irlp(val as u8) + } + #[doc = "IrDA low-power"] + pub fn set_irlp(&mut self, val: super::vals::Irlp) { + self.0 = (self.0 & !(0x01 << 2usize)) | (((val.0 as u32) & 0x01) << 2usize); + } + #[doc = "Half-duplex selection"] + pub const fn hdsel(&self) -> super::vals::Hdsel { + let val = (self.0 >> 3usize) & 0x01; + super::vals::Hdsel(val as u8) + } + #[doc = "Half-duplex selection"] + pub fn set_hdsel(&mut self, val: super::vals::Hdsel) { + self.0 = (self.0 & !(0x01 << 3usize)) | (((val.0 as u32) & 0x01) << 3usize); + } + #[doc = "DMA enable receiver"] + pub const fn dmar(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "DMA enable receiver"] + pub fn set_dmar(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "DMA enable transmitter"] + pub const fn dmat(&self) -> bool { + let val = (self.0 >> 7usize) & 0x01; + val != 0 + } + #[doc = "DMA enable transmitter"] + pub fn set_dmat(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 7usize)) | (((val as u32) & 0x01) << 7usize); + } + } + impl Default for Cr3 { + fn default() -> Cr3 { + Cr3(0) + } + } + #[doc = "Guard time and prescaler register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Gtpr(pub u32); + impl Gtpr { + #[doc = "Prescaler value"] + pub const fn psc(&self) -> u8 { + let val = (self.0 >> 0usize) & 0xff; + val as u8 + } + #[doc = "Prescaler value"] + pub fn set_psc(&mut self, val: u8) { + self.0 = (self.0 & !(0xff << 0usize)) | (((val as u32) & 0xff) << 0usize); + } + #[doc = "Guard time value"] + pub const fn gt(&self) -> u8 { + let val = (self.0 >> 8usize) & 0xff; + val as u8 + } + #[doc = "Guard time value"] + pub fn set_gt(&mut self, val: u8) { + self.0 = (self.0 & !(0xff << 8usize)) | (((val as u32) & 0xff) << 8usize); + } + } + impl Default for Gtpr { + fn default() -> Gtpr { + Gtpr(0) + } + } + #[doc = "Data register"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Dr(pub u32); + impl Dr { + #[doc = "Data value"] + pub const fn dr(&self) -> u16 { + let val = (self.0 >> 0usize) & 0x01ff; + val as u16 + } + #[doc = "Data value"] + pub fn set_dr(&mut self, val: u16) { + self.0 = (self.0 & !(0x01ff << 0usize)) | (((val as u32) & 0x01ff) << 0usize); + } + } + impl Default for Dr { + fn default() -> Dr { + Dr(0) + } + } + #[doc = "Control register 2"] + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq)] + pub struct Cr2(pub u32); + impl Cr2 { + #[doc = "Address of the USART node"] + pub const fn add(&self) -> u8 { + let val = (self.0 >> 0usize) & 0x0f; + val as u8 + } + #[doc = "Address of the USART node"] + pub fn set_add(&mut self, val: u8) { + self.0 = (self.0 & !(0x0f << 0usize)) | (((val as u32) & 0x0f) << 0usize); + } + #[doc = "lin break detection length"] + pub const fn lbdl(&self) -> super::vals::Lbdl { + let val = (self.0 >> 5usize) & 0x01; + super::vals::Lbdl(val as u8) + } + #[doc = "lin break detection length"] + pub fn set_lbdl(&mut self, val: super::vals::Lbdl) { + self.0 = (self.0 & !(0x01 << 5usize)) | (((val.0 as u32) & 0x01) << 5usize); + } + #[doc = "LIN break detection interrupt enable"] + pub const fn lbdie(&self) -> bool { + let val = (self.0 >> 6usize) & 0x01; + val != 0 + } + #[doc = "LIN break detection interrupt enable"] + pub fn set_lbdie(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 6usize)) | (((val as u32) & 0x01) << 6usize); + } + #[doc = "STOP bits"] + pub const fn stop(&self) -> super::vals::Stop { + let val = (self.0 >> 12usize) & 0x03; + super::vals::Stop(val as u8) + } + #[doc = "STOP bits"] + pub fn set_stop(&mut self, val: super::vals::Stop) { + self.0 = (self.0 & !(0x03 << 12usize)) | (((val.0 as u32) & 0x03) << 12usize); + } + #[doc = "LIN mode enable"] + pub const fn linen(&self) -> bool { + let val = (self.0 >> 14usize) & 0x01; + val != 0 + } + #[doc = "LIN mode enable"] + pub fn set_linen(&mut self, val: bool) { + self.0 = (self.0 & !(0x01 << 14usize)) | (((val as u32) & 0x01) << 14usize); + } + } + impl Default for Cr2 { + fn default() -> Cr2 { + Cr2(0) + } + } + } + pub mod vals { + use crate::generic::*; + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Cpol(pub u8); + impl Cpol { + #[doc = "Steady low value on CK pin outside transmission window"] + pub const LOW: Self = Self(0); + #[doc = "Steady high value on CK pin outside transmission window"] + pub const HIGH: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Stop(pub u8); + impl Stop { + #[doc = "1 stop bit"] + pub const STOP1: Self = Self(0); + #[doc = "0.5 stop bits"] + pub const STOP0P5: Self = Self(0x01); + #[doc = "2 stop bits"] + pub const STOP2: Self = Self(0x02); + #[doc = "1.5 stop bits"] + pub const STOP1P5: Self = Self(0x03); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Rwu(pub u8); + impl Rwu { + #[doc = "Receiver in active mode"] + pub const ACTIVE: Self = Self(0); + #[doc = "Receiver in mute mode"] + pub const MUTE: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Sbk(pub u8); + impl Sbk { + #[doc = "No break character is transmitted"] + pub const NOBREAK: Self = Self(0); + #[doc = "Break character transmitted"] + pub const BREAK: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct M(pub u8); + impl M { + #[doc = "8 data bits"] + pub const M8: Self = Self(0); + #[doc = "9 data bits"] + pub const M9: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Lbdl(pub u8); + impl Lbdl { + #[doc = "10-bit break detection"] + pub const LBDL10: Self = Self(0); + #[doc = "11-bit break detection"] + pub const LBDL11: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Cpha(pub u8); + impl Cpha { + #[doc = "The first clock transition is the first data capture edge"] + pub const FIRST: Self = Self(0); + #[doc = "The second clock transition is the first data capture edge"] + pub const SECOND: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Hdsel(pub u8); + impl Hdsel { + #[doc = "Half duplex mode is not selected"] + pub const FULLDUPLEX: Self = Self(0); + #[doc = "Half duplex mode is selected"] + pub const HALFDUPLEX: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Wake(pub u8); + impl Wake { + #[doc = "USART wakeup on idle line"] + pub const IDLELINE: Self = Self(0); + #[doc = "USART wakeup on address mark"] + pub const ADDRESSMARK: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Irlp(pub u8); + impl Irlp { + #[doc = "Normal mode"] + pub const NORMAL: Self = Self(0); + #[doc = "Low-power mode"] + pub const LOWPOWER: Self = Self(0x01); + } + #[repr(transparent)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] + pub struct Ps(pub u8); + impl Ps { + #[doc = "Even parity"] + pub const EVEN: Self = Self(0); + #[doc = "Odd parity"] + pub const ODD: Self = Self(0x01); + } + } +} diff --git a/embassy-stm32/src/chip/stm32f401cb.rs b/embassy-stm32/src/pac/stm32f401cb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401cb.rs rename to embassy-stm32/src/pac/stm32f401cb.rs index 027fef5a..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401cb.rs +++ b/embassy-stm32/src/pac/stm32f401cb.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, - TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401cc.rs b/embassy-stm32/src/pac/stm32f401cc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401cc.rs rename to embassy-stm32/src/pac/stm32f401cc.rs index 027fef5a..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401cc.rs +++ b/embassy-stm32/src/pac/stm32f401cc.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, - TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401cd.rs b/embassy-stm32/src/pac/stm32f401cd.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401cd.rs rename to embassy-stm32/src/pac/stm32f401cd.rs index 027fef5a..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401cd.rs +++ b/embassy-stm32/src/pac/stm32f401cd.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, - TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401ce.rs b/embassy-stm32/src/pac/stm32f401ce.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401ce.rs rename to embassy-stm32/src/pac/stm32f401ce.rs index 027fef5a..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401ce.rs +++ b/embassy-stm32/src/pac/stm32f401ce.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, TIM3, - TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401rb.rs b/embassy-stm32/src/pac/stm32f401rb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401rb.rs rename to embassy-stm32/src/pac/stm32f401rb.rs index 163900e9..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401rb.rs +++ b/embassy-stm32/src/pac/stm32f401rb.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, - TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401rc.rs b/embassy-stm32/src/pac/stm32f401rc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401rc.rs rename to embassy-stm32/src/pac/stm32f401rc.rs index 163900e9..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401rc.rs +++ b/embassy-stm32/src/pac/stm32f401rc.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, - TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401rd.rs b/embassy-stm32/src/pac/stm32f401rd.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401rd.rs rename to embassy-stm32/src/pac/stm32f401rd.rs index 163900e9..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401rd.rs +++ b/embassy-stm32/src/pac/stm32f401rd.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, - TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401re.rs b/embassy-stm32/src/pac/stm32f401re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401re.rs rename to embassy-stm32/src/pac/stm32f401re.rs index 163900e9..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401re.rs +++ b/embassy-stm32/src/pac/stm32f401re.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM2, - TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401vb.rs b/embassy-stm32/src/pac/stm32f401vb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401vb.rs rename to embassy-stm32/src/pac/stm32f401vb.rs index 8976fb75..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401vb.rs +++ b/embassy-stm32/src/pac/stm32f401vb.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, - TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401vc.rs b/embassy-stm32/src/pac/stm32f401vc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401vc.rs rename to embassy-stm32/src/pac/stm32f401vc.rs index 8976fb75..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401vc.rs +++ b/embassy-stm32/src/pac/stm32f401vc.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, - TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401vd.rs b/embassy-stm32/src/pac/stm32f401vd.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401vd.rs rename to embassy-stm32/src/pac/stm32f401vd.rs index 8976fb75..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401vd.rs +++ b/embassy-stm32/src/pac/stm32f401vd.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, - TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f401ve.rs b/embassy-stm32/src/pac/stm32f401ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f401ve.rs rename to embassy-stm32/src/pac/stm32f401ve.rs index 8976fb75..c243b7b2 100644 --- a/embassy-stm32/src/chip/stm32f401ve.rs +++ b/embassy-stm32/src/pac/stm32f401ve.rs @@ -1,19 +1,159 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, - TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -343,124 +483,3 @@ mod interrupt_vector { Vector { _handler: SPI4 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f405oe.rs b/embassy-stm32/src/pac/stm32f405oe.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f405oe.rs rename to embassy-stm32/src/pac/stm32f405oe.rs index 8cffccd9..55def9b7 100644 --- a/embassy-stm32/src/chip/stm32f405oe.rs +++ b/embassy-stm32/src/pac/stm32f405oe.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, - TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, - USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -422,192 +635,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f405og.rs b/embassy-stm32/src/pac/stm32f405og.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f405og.rs rename to embassy-stm32/src/pac/stm32f405og.rs index 8cffccd9..55def9b7 100644 --- a/embassy-stm32/src/chip/stm32f405og.rs +++ b/embassy-stm32/src/pac/stm32f405og.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, - TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, - USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -422,192 +635,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f405rg.rs b/embassy-stm32/src/pac/stm32f405rg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f405rg.rs rename to embassy-stm32/src/pac/stm32f405rg.rs index 8cffccd9..55def9b7 100644 --- a/embassy-stm32/src/chip/stm32f405rg.rs +++ b/embassy-stm32/src/pac/stm32f405rg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, - TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, - USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -422,192 +635,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f405vg.rs b/embassy-stm32/src/pac/stm32f405vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f405vg.rs rename to embassy-stm32/src/pac/stm32f405vg.rs index 8cffccd9..55def9b7 100644 --- a/embassy-stm32/src/chip/stm32f405vg.rs +++ b/embassy-stm32/src/pac/stm32f405vg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, - TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, - USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -422,192 +635,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f405zg.rs b/embassy-stm32/src/pac/stm32f405zg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f405zg.rs rename to embassy-stm32/src/pac/stm32f405zg.rs index 8cffccd9..55def9b7 100644 --- a/embassy-stm32/src/chip/stm32f405zg.rs +++ b/embassy-stm32/src/pac/stm32f405zg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, TIM11, - TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, - USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -422,192 +635,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407ie.rs b/embassy-stm32/src/pac/stm32f407ie.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407ie.rs rename to embassy-stm32/src/pac/stm32f407ie.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407ie.rs +++ b/embassy-stm32/src/pac/stm32f407ie.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407ig.rs b/embassy-stm32/src/pac/stm32f407ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407ig.rs rename to embassy-stm32/src/pac/stm32f407ig.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407ig.rs +++ b/embassy-stm32/src/pac/stm32f407ig.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407ve.rs b/embassy-stm32/src/pac/stm32f407ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407ve.rs rename to embassy-stm32/src/pac/stm32f407ve.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407ve.rs +++ b/embassy-stm32/src/pac/stm32f407ve.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407vg.rs b/embassy-stm32/src/pac/stm32f407vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407vg.rs rename to embassy-stm32/src/pac/stm32f407vg.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407vg.rs +++ b/embassy-stm32/src/pac/stm32f407vg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407ze.rs b/embassy-stm32/src/pac/stm32f407ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407ze.rs rename to embassy-stm32/src/pac/stm32f407ze.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407ze.rs +++ b/embassy-stm32/src/pac/stm32f407ze.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f407zg.rs b/embassy-stm32/src/pac/stm32f407zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f407zg.rs rename to embassy-stm32/src/pac/stm32f407zg.rs index f86038e1..d54d54fe 100644 --- a/embassy-stm32/src/chip/stm32f407zg.rs +++ b/embassy-stm32/src/pac/stm32f407zg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, ETH, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,192 +644,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f410c8.rs b/embassy-stm32/src/pac/stm32f410c8.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f410c8.rs rename to embassy-stm32/src/pac/stm32f410c8.rs index 3b7a40d3..c5eb48a7 100644 --- a/embassy-stm32/src/chip/stm32f410c8.rs +++ b/embassy-stm32/src/pac/stm32f410c8.rs @@ -1,17 +1,123 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, - TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -342,90 +448,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f410cb.rs b/embassy-stm32/src/pac/stm32f410cb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f410cb.rs rename to embassy-stm32/src/pac/stm32f410cb.rs index 3b7a40d3..c5eb48a7 100644 --- a/embassy-stm32/src/chip/stm32f410cb.rs +++ b/embassy-stm32/src/pac/stm32f410cb.rs @@ -1,17 +1,123 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, - TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -342,90 +448,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f410r8.rs b/embassy-stm32/src/pac/stm32f410r8.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f410r8.rs rename to embassy-stm32/src/pac/stm32f410r8.rs index 3b7a40d3..c5eb48a7 100644 --- a/embassy-stm32/src/chip/stm32f410r8.rs +++ b/embassy-stm32/src/pac/stm32f410r8.rs @@ -1,17 +1,123 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, - TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -342,90 +448,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f410rb.rs b/embassy-stm32/src/pac/stm32f410rb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f410rb.rs rename to embassy-stm32/src/pac/stm32f410rb.rs index 3b7a40d3..c5eb48a7 100644 --- a/embassy-stm32/src/chip/stm32f410rb.rs +++ b/embassy-stm32/src/pac/stm32f410rb.rs @@ -1,17 +1,123 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SPI2, SPI5, SYSCFG, - TIM1, TIM11, TIM5, TIM6, TIM9, USART1, USART2, USART6, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -342,90 +448,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f410t8.rs b/embassy-stm32/src/pac/stm32f410t8.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f410t8.rs rename to embassy-stm32/src/pac/stm32f410t8.rs index e9035f1a..1eb28b9f 100644 --- a/embassy-stm32/src/chip/stm32f410t8.rs +++ b/embassy-stm32/src/pac/stm32f410t8.rs @@ -1,17 +1,116 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, - TIM5, TIM6, TIM9, USART1, USART2, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -333,84 +432,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); diff --git a/embassy-stm32/src/chip/stm32f410tb.rs b/embassy-stm32/src/pac/stm32f410tb.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f410tb.rs rename to embassy-stm32/src/pac/stm32f410tb.rs index e9035f1a..1eb28b9f 100644 --- a/embassy-stm32/src/chip/stm32f410tb.rs +++ b/embassy-stm32/src/pac/stm32f410tb.rs @@ -1,17 +1,116 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x40080000 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, IWDG, LPTIM1, RCC, RNG, RTC, SPI1, SYSCFG, TIM1, TIM11, - TIM5, TIM6, TIM9, USART1, USART2, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -333,84 +432,3 @@ mod interrupt_vector { Vector { _handler: LPTIM1 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x40080000); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); diff --git a/embassy-stm32/src/chip/stm32f411cc.rs b/embassy-stm32/src/pac/stm32f411cc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411cc.rs rename to embassy-stm32/src/pac/stm32f411cc.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411cc.rs +++ b/embassy-stm32/src/pac/stm32f411cc.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f411ce.rs b/embassy-stm32/src/pac/stm32f411ce.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411ce.rs rename to embassy-stm32/src/pac/stm32f411ce.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411ce.rs +++ b/embassy-stm32/src/pac/stm32f411ce.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f411rc.rs b/embassy-stm32/src/pac/stm32f411rc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411rc.rs rename to embassy-stm32/src/pac/stm32f411rc.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411rc.rs +++ b/embassy-stm32/src/pac/stm32f411rc.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f411re.rs b/embassy-stm32/src/pac/stm32f411re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411re.rs rename to embassy-stm32/src/pac/stm32f411re.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411re.rs +++ b/embassy-stm32/src/pac/stm32f411re.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f411vc.rs b/embassy-stm32/src/pac/stm32f411vc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411vc.rs rename to embassy-stm32/src/pac/stm32f411vc.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411vc.rs +++ b/embassy-stm32/src/pac/stm32f411vc.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f411ve.rs b/embassy-stm32/src/pac/stm32f411ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f411ve.rs rename to embassy-stm32/src/pac/stm32f411ve.rs index 1cad69ba..c747fc06 100644 --- a/embassy-stm32/src/chip/stm32f411ve.rs +++ b/embassy-stm32/src/pac/stm32f411ve.rs @@ -1,19 +1,161 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, - PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, - PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, - PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, - PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, - I2C1, I2C2, I2C3, IWDG, RCC, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, - TIM11, TIM2, TIM3, TIM4, TIM5, TIM9, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, + USART1, USART2, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -347,126 +489,3 @@ mod interrupt_vector { Vector { _handler: SPI5 }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f412ce.rs b/embassy-stm32/src/pac/stm32f412ce.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f412ce.rs rename to embassy-stm32/src/pac/stm32f412ce.rs index 5943ee39..0684b55d 100644 --- a/embassy-stm32/src/chip/stm32f412ce.rs +++ b/embassy-stm32/src/pac/stm32f412ce.rs @@ -1,18 +1,134 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,100 +547,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f412cg.rs b/embassy-stm32/src/pac/stm32f412cg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f412cg.rs rename to embassy-stm32/src/pac/stm32f412cg.rs index 5943ee39..0684b55d 100644 --- a/embassy-stm32/src/chip/stm32f412cg.rs +++ b/embassy-stm32/src/pac/stm32f412cg.rs @@ -1,18 +1,134 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -431,100 +547,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f412re.rs b/embassy-stm32/src/pac/stm32f412re.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f412re.rs rename to embassy-stm32/src/pac/stm32f412re.rs index b668b84e..1c1d5221 100644 --- a/embassy-stm32/src/chip/stm32f412re.rs +++ b/embassy-stm32/src/pac/stm32f412re.rs @@ -1,19 +1,162 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -435,126 +578,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f412rg.rs b/embassy-stm32/src/pac/stm32f412rg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f412rg.rs rename to embassy-stm32/src/pac/stm32f412rg.rs index b668b84e..1c1d5221 100644 --- a/embassy-stm32/src/chip/stm32f412rg.rs +++ b/embassy-stm32/src/pac/stm32f412rg.rs @@ -1,19 +1,162 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -435,126 +578,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); diff --git a/embassy-stm32/src/chip/stm32f412ve.rs b/embassy-stm32/src/pac/stm32f412ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f412ve.rs rename to embassy-stm32/src/pac/stm32f412ve.rs index 2c3dda1c..b45a90fa 100644 --- a/embassy-stm32/src/chip/stm32f412ve.rs +++ b/embassy-stm32/src/pac/stm32f412ve.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -438,181 +639,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f412vg.rs b/embassy-stm32/src/pac/stm32f412vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f412vg.rs rename to embassy-stm32/src/pac/stm32f412vg.rs index 2c3dda1c..b45a90fa 100644 --- a/embassy-stm32/src/chip/stm32f412vg.rs +++ b/embassy-stm32/src/pac/stm32f412vg.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -438,181 +639,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f412ze.rs b/embassy-stm32/src/pac/stm32f412ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f412ze.rs rename to embassy-stm32/src/pac/stm32f412ze.rs index 2c3dda1c..b45a90fa 100644 --- a/embassy-stm32/src/chip/stm32f412ze.rs +++ b/embassy-stm32/src/pac/stm32f412ze.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -438,181 +639,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f412zg.rs b/embassy-stm32/src/pac/stm32f412zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f412zg.rs rename to embassy-stm32/src/pac/stm32f412zg.rs index 2c3dda1c..b45a90fa 100644 --- a/embassy-stm32/src/chip/stm32f412zg.rs +++ b/embassy-stm32/src/pac/stm32f412zg.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, PA5, PA6, - PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, - PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, - PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, - PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, - PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -438,181 +639,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413cg.rs b/embassy-stm32/src/pac/stm32f413cg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413cg.rs rename to embassy-stm32/src/pac/stm32f413cg.rs index f15f2ed3..3ac805c9 100644 --- a/embassy-stm32/src/chip/stm32f413cg.rs +++ b/embassy-stm32/src/pac/stm32f413cg.rs @@ -1,22 +1,207 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,166 +684,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413ch.rs b/embassy-stm32/src/pac/stm32f413ch.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413ch.rs rename to embassy-stm32/src/pac/stm32f413ch.rs index f15f2ed3..3ac805c9 100644 --- a/embassy-stm32/src/chip/stm32f413ch.rs +++ b/embassy-stm32/src/pac/stm32f413ch.rs @@ -1,22 +1,207 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,166 +684,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413mg.rs b/embassy-stm32/src/pac/stm32f413mg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413mg.rs rename to embassy-stm32/src/pac/stm32f413mg.rs index 7ea6dd58..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413mg.rs +++ b/embassy-stm32/src/pac/stm32f413mg.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413mh.rs b/embassy-stm32/src/pac/stm32f413mh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413mh.rs rename to embassy-stm32/src/pac/stm32f413mh.rs index 7ea6dd58..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413mh.rs +++ b/embassy-stm32/src/pac/stm32f413mh.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413rg.rs b/embassy-stm32/src/pac/stm32f413rg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413rg.rs rename to embassy-stm32/src/pac/stm32f413rg.rs index 7ea6dd58..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413rg.rs +++ b/embassy-stm32/src/pac/stm32f413rg.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413rh.rs b/embassy-stm32/src/pac/stm32f413rh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413rh.rs rename to embassy-stm32/src/pac/stm32f413rh.rs index 7ea6dd58..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413rh.rs +++ b/embassy-stm32/src/pac/stm32f413rh.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -499,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413vg.rs b/embassy-stm32/src/pac/stm32f413vg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413vg.rs rename to embassy-stm32/src/pac/stm32f413vg.rs index 1894feac..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413vg.rs +++ b/embassy-stm32/src/pac/stm32f413vg.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -500,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413vh.rs b/embassy-stm32/src/pac/stm32f413vh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413vh.rs rename to embassy-stm32/src/pac/stm32f413vh.rs index 1894feac..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413vh.rs +++ b/embassy-stm32/src/pac/stm32f413vh.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -500,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413zg.rs b/embassy-stm32/src/pac/stm32f413zg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413zg.rs rename to embassy-stm32/src/pac/stm32f413zg.rs index 1894feac..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413zg.rs +++ b/embassy-stm32/src/pac/stm32f413zg.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -500,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f413zh.rs b/embassy-stm32/src/pac/stm32f413zh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f413zh.rs rename to embassy-stm32/src/pac/stm32f413zh.rs index 1894feac..d841d79f 100644 --- a/embassy-stm32/src/chip/stm32f413zh.rs +++ b/embassy-stm32/src/pac/stm32f413zh.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -500,181 +700,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f415og.rs b/embassy-stm32/src/pac/stm32f415og.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f415og.rs rename to embassy-stm32/src/pac/stm32f415og.rs index 1c3243ed..df71f877 100644 --- a/embassy-stm32/src/chip/stm32f415og.rs +++ b/embassy-stm32/src/pac/stm32f415og.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -425,192 +638,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f415rg.rs b/embassy-stm32/src/pac/stm32f415rg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f415rg.rs rename to embassy-stm32/src/pac/stm32f415rg.rs index 1c3243ed..df71f877 100644 --- a/embassy-stm32/src/chip/stm32f415rg.rs +++ b/embassy-stm32/src/pac/stm32f415rg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -425,192 +638,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f415vg.rs b/embassy-stm32/src/pac/stm32f415vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f415vg.rs rename to embassy-stm32/src/pac/stm32f415vg.rs index 1c3243ed..df71f877 100644 --- a/embassy-stm32/src/chip/stm32f415vg.rs +++ b/embassy-stm32/src/pac/stm32f415vg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -425,192 +638,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f415zg.rs b/embassy-stm32/src/pac/stm32f415zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f415zg.rs rename to embassy-stm32/src/pac/stm32f415zg.rs index 1c3243ed..df71f877 100644 --- a/embassy-stm32/src/chip/stm32f415zg.rs +++ b/embassy-stm32/src/pac/stm32f415zg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -425,192 +638,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417ie.rs b/embassy-stm32/src/pac/stm32f417ie.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417ie.rs rename to embassy-stm32/src/pac/stm32f417ie.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417ie.rs +++ b/embassy-stm32/src/pac/stm32f417ie.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417ig.rs b/embassy-stm32/src/pac/stm32f417ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417ig.rs rename to embassy-stm32/src/pac/stm32f417ig.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417ig.rs +++ b/embassy-stm32/src/pac/stm32f417ig.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417ve.rs b/embassy-stm32/src/pac/stm32f417ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417ve.rs rename to embassy-stm32/src/pac/stm32f417ve.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417ve.rs +++ b/embassy-stm32/src/pac/stm32f417ve.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417vg.rs b/embassy-stm32/src/pac/stm32f417vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417vg.rs rename to embassy-stm32/src/pac/stm32f417vg.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417vg.rs +++ b/embassy-stm32/src/pac/stm32f417vg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417ze.rs b/embassy-stm32/src/pac/stm32f417ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417ze.rs rename to embassy-stm32/src/pac/stm32f417ze.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417ze.rs +++ b/embassy-stm32/src/pac/stm32f417ze.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f417zg.rs b/embassy-stm32/src/pac/stm32f417zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f417zg.rs rename to embassy-stm32/src/pac/stm32f417zg.rs index f99ca7b1..2e802e9e 100644 --- a/embassy-stm32/src/chip/stm32f417zg.rs +++ b/embassy-stm32/src/pac/stm32f417zg.rs @@ -1,23 +1,236 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SDIO, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -434,192 +647,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f423ch.rs b/embassy-stm32/src/pac/stm32f423ch.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f423ch.rs rename to embassy-stm32/src/pac/stm32f423ch.rs index 54d5dbae..3dd03325 100644 --- a/embassy-stm32/src/chip/stm32f423ch.rs +++ b/embassy-stm32/src/pac/stm32f423ch.rs @@ -1,22 +1,207 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -502,166 +687,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f423mh.rs b/embassy-stm32/src/pac/stm32f423mh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f423mh.rs rename to embassy-stm32/src/pac/stm32f423mh.rs index a033c03b..0e844e7d 100644 --- a/embassy-stm32/src/chip/stm32f423mh.rs +++ b/embassy-stm32/src/pac/stm32f423mh.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -502,181 +703,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f423rh.rs b/embassy-stm32/src/pac/stm32f423rh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f423rh.rs rename to embassy-stm32/src/pac/stm32f423rh.rs index a033c03b..0e844e7d 100644 --- a/embassy-stm32/src/chip/stm32f423rh.rs +++ b/embassy-stm32/src/pac/stm32f423rh.rs @@ -1,22 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -502,181 +703,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f423vh.rs b/embassy-stm32/src/pac/stm32f423vh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f423vh.rs rename to embassy-stm32/src/pac/stm32f423vh.rs index 6f0c5bd6..0e844e7d 100644 --- a/embassy-stm32/src/chip/stm32f423vh.rs +++ b/embassy-stm32/src/pac/stm32f423vh.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -503,181 +703,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f423zh.rs b/embassy-stm32/src/pac/stm32f423zh.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f423zh.rs rename to embassy-stm32/src/pac/stm32f423zh.rs index 6f0c5bd6..0e844e7d 100644 --- a/embassy-stm32/src/chip/stm32f423zh.rs +++ b/embassy-stm32/src/pac/stm32f423zh.rs @@ -1,23 +1,223 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, TxPin, PA15, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, RxPin, PB3, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 8); +impl_usart_pin!(USART3, CtsPin, PB13, 8); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PA11, 8); +impl_usart_pin!(USART6, RxPin, PA12, 8); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, CAN2, CAN3, DAC, EXTI, FMPI2C1, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, - SPI3, SPI4, SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART10, UART4, UART5, UART7, UART8, UART9, USART1, USART2, USART3, - USART6, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -503,181 +703,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, TxPin, PA15, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, RxPin, PB3, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 8); -impl_usart_pin!(USART3, CtsPin, PB13, 8); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PA11, 8); -impl_usart_pin!(USART6, RxPin, PA12, 8); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427ag.rs b/embassy-stm32/src/pac/stm32f427ag.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427ag.rs rename to embassy-stm32/src/pac/stm32f427ag.rs index 9d2e19b8..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427ag.rs +++ b/embassy-stm32/src/pac/stm32f427ag.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427ai.rs b/embassy-stm32/src/pac/stm32f427ai.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427ai.rs rename to embassy-stm32/src/pac/stm32f427ai.rs index 9d2e19b8..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427ai.rs +++ b/embassy-stm32/src/pac/stm32f427ai.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427ig.rs b/embassy-stm32/src/pac/stm32f427ig.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427ig.rs rename to embassy-stm32/src/pac/stm32f427ig.rs index 2e18827e..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427ig.rs +++ b/embassy-stm32/src/pac/stm32f427ig.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427ii.rs b/embassy-stm32/src/pac/stm32f427ii.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427ii.rs rename to embassy-stm32/src/pac/stm32f427ii.rs index 2e18827e..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427ii.rs +++ b/embassy-stm32/src/pac/stm32f427ii.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427vg.rs b/embassy-stm32/src/pac/stm32f427vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427vg.rs rename to embassy-stm32/src/pac/stm32f427vg.rs index 67ee554a..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427vg.rs +++ b/embassy-stm32/src/pac/stm32f427vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427vi.rs b/embassy-stm32/src/pac/stm32f427vi.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427vi.rs rename to embassy-stm32/src/pac/stm32f427vi.rs index 67ee554a..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427vi.rs +++ b/embassy-stm32/src/pac/stm32f427vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, - TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, UART5, - UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427zg.rs b/embassy-stm32/src/pac/stm32f427zg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427zg.rs rename to embassy-stm32/src/pac/stm32f427zg.rs index 2e18827e..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427zg.rs +++ b/embassy-stm32/src/pac/stm32f427zg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f427zi.rs b/embassy-stm32/src/pac/stm32f427zi.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f427zi.rs rename to embassy-stm32/src/pac/stm32f427zi.rs index 2e18827e..36a117c1 100644 --- a/embassy-stm32/src/chip/stm32f427zi.rs +++ b/embassy-stm32/src/pac/stm32f427zi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,224 +709,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ag.rs b/embassy-stm32/src/pac/stm32f429ag.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ag.rs rename to embassy-stm32/src/pac/stm32f429ag.rs index 8ae247ad..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ag.rs +++ b/embassy-stm32/src/pac/stm32f429ag.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ai.rs b/embassy-stm32/src/pac/stm32f429ai.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ai.rs rename to embassy-stm32/src/pac/stm32f429ai.rs index 8ae247ad..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ai.rs +++ b/embassy-stm32/src/pac/stm32f429ai.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429be.rs b/embassy-stm32/src/pac/stm32f429be.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429be.rs rename to embassy-stm32/src/pac/stm32f429be.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429be.rs +++ b/embassy-stm32/src/pac/stm32f429be.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429bg.rs b/embassy-stm32/src/pac/stm32f429bg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429bg.rs rename to embassy-stm32/src/pac/stm32f429bg.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429bg.rs +++ b/embassy-stm32/src/pac/stm32f429bg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429bi.rs b/embassy-stm32/src/pac/stm32f429bi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429bi.rs rename to embassy-stm32/src/pac/stm32f429bi.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429bi.rs +++ b/embassy-stm32/src/pac/stm32f429bi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ie.rs b/embassy-stm32/src/pac/stm32f429ie.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ie.rs rename to embassy-stm32/src/pac/stm32f429ie.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ie.rs +++ b/embassy-stm32/src/pac/stm32f429ie.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ig.rs b/embassy-stm32/src/pac/stm32f429ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ig.rs rename to embassy-stm32/src/pac/stm32f429ig.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ig.rs +++ b/embassy-stm32/src/pac/stm32f429ig.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ii.rs b/embassy-stm32/src/pac/stm32f429ii.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ii.rs rename to embassy-stm32/src/pac/stm32f429ii.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ii.rs +++ b/embassy-stm32/src/pac/stm32f429ii.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ne.rs b/embassy-stm32/src/pac/stm32f429ne.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ne.rs rename to embassy-stm32/src/pac/stm32f429ne.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ne.rs +++ b/embassy-stm32/src/pac/stm32f429ne.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ng.rs b/embassy-stm32/src/pac/stm32f429ng.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ng.rs rename to embassy-stm32/src/pac/stm32f429ng.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ng.rs +++ b/embassy-stm32/src/pac/stm32f429ng.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ni.rs b/embassy-stm32/src/pac/stm32f429ni.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ni.rs rename to embassy-stm32/src/pac/stm32f429ni.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ni.rs +++ b/embassy-stm32/src/pac/stm32f429ni.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ve.rs b/embassy-stm32/src/pac/stm32f429ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ve.rs rename to embassy-stm32/src/pac/stm32f429ve.rs index 4b609740..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ve.rs +++ b/embassy-stm32/src/pac/stm32f429ve.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429vg.rs b/embassy-stm32/src/pac/stm32f429vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429vg.rs rename to embassy-stm32/src/pac/stm32f429vg.rs index 4b609740..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429vg.rs +++ b/embassy-stm32/src/pac/stm32f429vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429vi.rs b/embassy-stm32/src/pac/stm32f429vi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429vi.rs rename to embassy-stm32/src/pac/stm32f429vi.rs index 4b609740..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429vi.rs +++ b/embassy-stm32/src/pac/stm32f429vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, TIM1, - TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429ze.rs b/embassy-stm32/src/pac/stm32f429ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429ze.rs rename to embassy-stm32/src/pac/stm32f429ze.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429ze.rs +++ b/embassy-stm32/src/pac/stm32f429ze.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429zg.rs b/embassy-stm32/src/pac/stm32f429zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429zg.rs rename to embassy-stm32/src/pac/stm32f429zg.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429zg.rs +++ b/embassy-stm32/src/pac/stm32f429zg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f429zi.rs b/embassy-stm32/src/pac/stm32f429zi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f429zi.rs rename to embassy-stm32/src/pac/stm32f429zi.rs index a1c7ae71..2e314d2f 100644 --- a/embassy-stm32/src/chip/stm32f429zi.rs +++ b/embassy-stm32/src/pac/stm32f429zi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -469,224 +715,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437ai.rs b/embassy-stm32/src/pac/stm32f437ai.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437ai.rs rename to embassy-stm32/src/pac/stm32f437ai.rs index 8b1eb9e3..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437ai.rs +++ b/embassy-stm32/src/pac/stm32f437ai.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437ig.rs b/embassy-stm32/src/pac/stm32f437ig.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437ig.rs rename to embassy-stm32/src/pac/stm32f437ig.rs index 198585d7..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437ig.rs +++ b/embassy-stm32/src/pac/stm32f437ig.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -467,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437ii.rs b/embassy-stm32/src/pac/stm32f437ii.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437ii.rs rename to embassy-stm32/src/pac/stm32f437ii.rs index 198585d7..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437ii.rs +++ b/embassy-stm32/src/pac/stm32f437ii.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -467,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437vg.rs b/embassy-stm32/src/pac/stm32f437vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437vg.rs rename to embassy-stm32/src/pac/stm32f437vg.rs index b1d2e290..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437vg.rs +++ b/embassy-stm32/src/pac/stm32f437vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437vi.rs b/embassy-stm32/src/pac/stm32f437vi.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437vi.rs rename to embassy-stm32/src/pac/stm32f437vi.rs index b1d2e290..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437vi.rs +++ b/embassy-stm32/src/pac/stm32f437vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SYSCFG, - TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TIM9, UART4, - UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437zg.rs b/embassy-stm32/src/pac/stm32f437zg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437zg.rs rename to embassy-stm32/src/pac/stm32f437zg.rs index 198585d7..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437zg.rs +++ b/embassy-stm32/src/pac/stm32f437zg.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -467,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f437zi.rs b/embassy-stm32/src/pac/stm32f437zi.rs similarity index 87% rename from embassy-stm32/src/chip/stm32f437zi.rs rename to embassy-stm32/src/pac/stm32f437zi.rs index 198585d7..a0f5e14e 100644 --- a/embassy-stm32/src/chip/stm32f437zi.rs +++ b/embassy-stm32/src/pac/stm32f437zi.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -467,224 +712,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439ai.rs b/embassy-stm32/src/pac/stm32f439ai.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439ai.rs rename to embassy-stm32/src/pac/stm32f439ai.rs index b0ff8fa3..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439ai.rs +++ b/embassy-stm32/src/pac/stm32f439ai.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439bg.rs b/embassy-stm32/src/pac/stm32f439bg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439bg.rs rename to embassy-stm32/src/pac/stm32f439bg.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439bg.rs +++ b/embassy-stm32/src/pac/stm32f439bg.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439bi.rs b/embassy-stm32/src/pac/stm32f439bi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439bi.rs rename to embassy-stm32/src/pac/stm32f439bi.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439bi.rs +++ b/embassy-stm32/src/pac/stm32f439bi.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439ig.rs b/embassy-stm32/src/pac/stm32f439ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439ig.rs rename to embassy-stm32/src/pac/stm32f439ig.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439ig.rs +++ b/embassy-stm32/src/pac/stm32f439ig.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439ii.rs b/embassy-stm32/src/pac/stm32f439ii.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439ii.rs rename to embassy-stm32/src/pac/stm32f439ii.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439ii.rs +++ b/embassy-stm32/src/pac/stm32f439ii.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439ng.rs b/embassy-stm32/src/pac/stm32f439ng.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439ng.rs rename to embassy-stm32/src/pac/stm32f439ng.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439ng.rs +++ b/embassy-stm32/src/pac/stm32f439ng.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439ni.rs b/embassy-stm32/src/pac/stm32f439ni.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439ni.rs rename to embassy-stm32/src/pac/stm32f439ni.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439ni.rs +++ b/embassy-stm32/src/pac/stm32f439ni.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439vg.rs b/embassy-stm32/src/pac/stm32f439vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439vg.rs rename to embassy-stm32/src/pac/stm32f439vg.rs index 8dfb7bdb..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439vg.rs +++ b/embassy-stm32/src/pac/stm32f439vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -472,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439vi.rs b/embassy-stm32/src/pac/stm32f439vi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439vi.rs rename to embassy-stm32/src/pac/stm32f439vi.rs index 8dfb7bdb..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439vi.rs +++ b/embassy-stm32/src/pac/stm32f439vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -472,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439zg.rs b/embassy-stm32/src/pac/stm32f439zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439zg.rs rename to embassy-stm32/src/pac/stm32f439zg.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439zg.rs +++ b/embassy-stm32/src/pac/stm32f439zg.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f439zi.rs b/embassy-stm32/src/pac/stm32f439zi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f439zi.rs rename to embassy-stm32/src/pac/stm32f439zi.rs index eec3a3f6..80e31cb1 100644 --- a/embassy-stm32/src/chip/stm32f439zi.rs +++ b/embassy-stm32/src/pac/stm32f439zi.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, - TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -473,224 +718,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446mc.rs b/embassy-stm32/src/pac/stm32f446mc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446mc.rs rename to embassy-stm32/src/pac/stm32f446mc.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446mc.rs +++ b/embassy-stm32/src/pac/stm32f446mc.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446me.rs b/embassy-stm32/src/pac/stm32f446me.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446me.rs rename to embassy-stm32/src/pac/stm32f446me.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446me.rs +++ b/embassy-stm32/src/pac/stm32f446me.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446rc.rs b/embassy-stm32/src/pac/stm32f446rc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446rc.rs rename to embassy-stm32/src/pac/stm32f446rc.rs index 222dcfb8..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446rc.rs +++ b/embassy-stm32/src/pac/stm32f446rc.rs @@ -1,22 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, - SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -464,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446re.rs b/embassy-stm32/src/pac/stm32f446re.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446re.rs rename to embassy-stm32/src/pac/stm32f446re.rs index 222dcfb8..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446re.rs +++ b/embassy-stm32/src/pac/stm32f446re.rs @@ -1,22 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SDIO, SPDIFRX, SPI1, SPI2, - SPI3, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -464,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446vc.rs b/embassy-stm32/src/pac/stm32f446vc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446vc.rs rename to embassy-stm32/src/pac/stm32f446vc.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446vc.rs +++ b/embassy-stm32/src/pac/stm32f446vc.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446ve.rs b/embassy-stm32/src/pac/stm32f446ve.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446ve.rs rename to embassy-stm32/src/pac/stm32f446ve.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446ve.rs +++ b/embassy-stm32/src/pac/stm32f446ve.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446zc.rs b/embassy-stm32/src/pac/stm32f446zc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446zc.rs rename to embassy-stm32/src/pac/stm32f446zc.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446zc.rs +++ b/embassy-stm32/src/pac/stm32f446zc.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f446ze.rs b/embassy-stm32/src/pac/stm32f446ze.rs similarity index 89% rename from embassy-stm32/src/chip/stm32f446ze.rs rename to embassy-stm32/src/pac/stm32f446ze.rs index b4f048ca..00a5175d 100644 --- a/embassy-stm32/src/chip/stm32f446ze.rs +++ b/embassy-stm32/src/pac/stm32f446ze.rs @@ -1,23 +1,216 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, RxPin, PC5, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, EXTI, FMPI2C1, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, QUADSPI, RCC, RTC, SAI1, SAI2, SDIO, SPDIFRX, SPI1, - SPI2, SPI3, SPI4, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, SYSCFG, USART1, USART2, USART3, + USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -465,176 +658,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, RxPin, PC5, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ae.rs b/embassy-stm32/src/pac/stm32f469ae.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ae.rs rename to embassy-stm32/src/pac/stm32f469ae.rs index 94e2689f..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ae.rs +++ b/embassy-stm32/src/pac/stm32f469ae.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ag.rs b/embassy-stm32/src/pac/stm32f469ag.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ag.rs rename to embassy-stm32/src/pac/stm32f469ag.rs index 94e2689f..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ag.rs +++ b/embassy-stm32/src/pac/stm32f469ag.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ai.rs b/embassy-stm32/src/pac/stm32f469ai.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ai.rs rename to embassy-stm32/src/pac/stm32f469ai.rs index 94e2689f..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ai.rs +++ b/embassy-stm32/src/pac/stm32f469ai.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI6, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469be.rs b/embassy-stm32/src/pac/stm32f469be.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469be.rs rename to embassy-stm32/src/pac/stm32f469be.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469be.rs +++ b/embassy-stm32/src/pac/stm32f469be.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469bg.rs b/embassy-stm32/src/pac/stm32f469bg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469bg.rs rename to embassy-stm32/src/pac/stm32f469bg.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469bg.rs +++ b/embassy-stm32/src/pac/stm32f469bg.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469bi.rs b/embassy-stm32/src/pac/stm32f469bi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469bi.rs rename to embassy-stm32/src/pac/stm32f469bi.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469bi.rs +++ b/embassy-stm32/src/pac/stm32f469bi.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ie.rs b/embassy-stm32/src/pac/stm32f469ie.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ie.rs rename to embassy-stm32/src/pac/stm32f469ie.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ie.rs +++ b/embassy-stm32/src/pac/stm32f469ie.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ig.rs b/embassy-stm32/src/pac/stm32f469ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ig.rs rename to embassy-stm32/src/pac/stm32f469ig.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ig.rs +++ b/embassy-stm32/src/pac/stm32f469ig.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ii.rs b/embassy-stm32/src/pac/stm32f469ii.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ii.rs rename to embassy-stm32/src/pac/stm32f469ii.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ii.rs +++ b/embassy-stm32/src/pac/stm32f469ii.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ne.rs b/embassy-stm32/src/pac/stm32f469ne.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ne.rs rename to embassy-stm32/src/pac/stm32f469ne.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ne.rs +++ b/embassy-stm32/src/pac/stm32f469ne.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ng.rs b/embassy-stm32/src/pac/stm32f469ng.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ng.rs rename to embassy-stm32/src/pac/stm32f469ng.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ng.rs +++ b/embassy-stm32/src/pac/stm32f469ng.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ni.rs b/embassy-stm32/src/pac/stm32f469ni.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ni.rs rename to embassy-stm32/src/pac/stm32f469ni.rs index ccfe25de..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ni.rs +++ b/embassy-stm32/src/pac/stm32f469ni.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, ETH, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, SPI5, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -478,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ve.rs b/embassy-stm32/src/pac/stm32f469ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ve.rs rename to embassy-stm32/src/pac/stm32f469ve.rs index ef61f2bd..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ve.rs +++ b/embassy-stm32/src/pac/stm32f469ve.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469vg.rs b/embassy-stm32/src/pac/stm32f469vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469vg.rs rename to embassy-stm32/src/pac/stm32f469vg.rs index ef61f2bd..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469vg.rs +++ b/embassy-stm32/src/pac/stm32f469vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469vi.rs b/embassy-stm32/src/pac/stm32f469vi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469vi.rs rename to embassy-stm32/src/pac/stm32f469vi.rs index ef61f2bd..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469vi.rs +++ b/embassy-stm32/src/pac/stm32f469vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469ze.rs b/embassy-stm32/src/pac/stm32f469ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469ze.rs rename to embassy-stm32/src/pac/stm32f469ze.rs index 569912a3..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469ze.rs +++ b/embassy-stm32/src/pac/stm32f469ze.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469zg.rs b/embassy-stm32/src/pac/stm32f469zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469zg.rs rename to embassy-stm32/src/pac/stm32f469zg.rs index 569912a3..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469zg.rs +++ b/embassy-stm32/src/pac/stm32f469zg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f469zi.rs b/embassy-stm32/src/pac/stm32f469zi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f469zi.rs rename to embassy-stm32/src/pac/stm32f469zi.rs index 569912a3..77d32756 100644 --- a/embassy-stm32/src/chip/stm32f469zi.rs +++ b/embassy-stm32/src/pac/stm32f469zi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, DAC, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -477,224 +723,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ag.rs b/embassy-stm32/src/pac/stm32f479ag.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ag.rs rename to embassy-stm32/src/pac/stm32f479ag.rs index 6cea1e1d..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ag.rs +++ b/embassy-stm32/src/pac/stm32f479ag.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ai.rs b/embassy-stm32/src/pac/stm32f479ai.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ai.rs rename to embassy-stm32/src/pac/stm32f479ai.rs index 6cea1e1d..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ai.rs +++ b/embassy-stm32/src/pac/stm32f479ai.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, - TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479bg.rs b/embassy-stm32/src/pac/stm32f479bg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479bg.rs rename to embassy-stm32/src/pac/stm32f479bg.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479bg.rs +++ b/embassy-stm32/src/pac/stm32f479bg.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479bi.rs b/embassy-stm32/src/pac/stm32f479bi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479bi.rs rename to embassy-stm32/src/pac/stm32f479bi.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479bi.rs +++ b/embassy-stm32/src/pac/stm32f479bi.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ig.rs b/embassy-stm32/src/pac/stm32f479ig.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ig.rs rename to embassy-stm32/src/pac/stm32f479ig.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ig.rs +++ b/embassy-stm32/src/pac/stm32f479ig.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ii.rs b/embassy-stm32/src/pac/stm32f479ii.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ii.rs rename to embassy-stm32/src/pac/stm32f479ii.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ii.rs +++ b/embassy-stm32/src/pac/stm32f479ii.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ng.rs b/embassy-stm32/src/pac/stm32f479ng.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ng.rs rename to embassy-stm32/src/pac/stm32f479ng.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ng.rs +++ b/embassy-stm32/src/pac/stm32f479ng.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479ni.rs b/embassy-stm32/src/pac/stm32f479ni.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479ni.rs rename to embassy-stm32/src/pac/stm32f479ni.rs index 40a58618..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479ni.rs +++ b/embassy-stm32/src/pac/stm32f479ni.rs @@ -1,26 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, ETH, EXTI, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, - PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, - PK15, HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, - SPI4, SPI5, SPI6, SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, - TIM6, TIM7, TIM8, TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, - USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -481,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479vg.rs b/embassy-stm32/src/pac/stm32f479vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479vg.rs rename to embassy-stm32/src/pac/stm32f479vg.rs index 25c960a4..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479vg.rs +++ b/embassy-stm32/src/pac/stm32f479vg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -480,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479vi.rs b/embassy-stm32/src/pac/stm32f479vi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479vi.rs rename to embassy-stm32/src/pac/stm32f479vi.rs index 25c960a4..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479vi.rs +++ b/embassy-stm32/src/pac/stm32f479vi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -480,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479zg.rs b/embassy-stm32/src/pac/stm32f479zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479zg.rs rename to embassy-stm32/src/pac/stm32f479zg.rs index 7e5ee324..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479zg.rs +++ b/embassy-stm32/src/pac/stm32f479zg.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -480,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32f479zi.rs b/embassy-stm32/src/pac/stm32f479zi.rs similarity index 88% rename from embassy-stm32/src/chip/stm32f479zi.rs rename to embassy-stm32/src/pac/stm32f479zi.rs index 7e5ee324..47f8e0ff 100644 --- a/embassy-stm32/src/chip/stm32f479zi.rs +++ b/embassy-stm32/src/pac/stm32f479zi.rs @@ -1,25 +1,271 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x40020000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +impl_gpio_pin!(PJ0, 9, 0, EXTI0); +impl_gpio_pin!(PJ1, 9, 1, EXTI1); +impl_gpio_pin!(PJ2, 9, 2, EXTI2); +impl_gpio_pin!(PJ3, 9, 3, EXTI3); +impl_gpio_pin!(PJ4, 9, 4, EXTI4); +impl_gpio_pin!(PJ5, 9, 5, EXTI5); +impl_gpio_pin!(PJ6, 9, 6, EXTI6); +impl_gpio_pin!(PJ7, 9, 7, EXTI7); +impl_gpio_pin!(PJ8, 9, 8, EXTI8); +impl_gpio_pin!(PJ9, 9, 9, EXTI9); +impl_gpio_pin!(PJ10, 9, 10, EXTI10); +impl_gpio_pin!(PJ11, 9, 11, EXTI11); +impl_gpio_pin!(PJ12, 9, 12, EXTI12); +impl_gpio_pin!(PJ13, 9, 13, EXTI13); +impl_gpio_pin!(PJ14, 9, 14, EXTI14); +impl_gpio_pin!(PJ15, 9, 15, EXTI15); +impl_gpio_pin!(PK0, 10, 0, EXTI0); +impl_gpio_pin!(PK1, 10, 1, EXTI1); +impl_gpio_pin!(PK2, 10, 2, EXTI2); +impl_gpio_pin!(PK3, 10, 3, EXTI3); +impl_gpio_pin!(PK4, 10, 4, EXTI4); +impl_gpio_pin!(PK5, 10, 5, EXTI5); +impl_gpio_pin!(PK6, 10, 6, EXTI6); +impl_gpio_pin!(PK7, 10, 7, EXTI7); +impl_gpio_pin!(PK8, 10, 8, EXTI8); +impl_gpio_pin!(PK9, 10, 9, EXTI9); +impl_gpio_pin!(PK10, 10, 10, EXTI10); +impl_gpio_pin!(PK11, 10, 11, EXTI11); +impl_gpio_pin!(PK12, 10, 12, EXTI12); +impl_gpio_pin!(PK13, 10, 13, EXTI13); +impl_gpio_pin!(PK14, 10, 14, EXTI14); +impl_gpio_pin!(PK15, 10, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40013c00 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x40020000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x40020400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x40020800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x40020c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x40021000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x40021400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x40021800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x40021c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x40022000 as _); +pub const GPIOJ: gpio::Gpio = gpio::Gpio(0x40022400 as _); +pub const GPIOK: gpio::Gpio = gpio::Gpio(0x40022800 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40013800 as _); +pub const USART1: usart::Usart = usart::Usart(0x40011000 as _); +impl_usart!(USART1); +impl_usart_pin!(USART1, RxPin, PA10, 7); +impl_usart_pin!(USART1, CtsPin, PA11, 7); +impl_usart_pin!(USART1, RtsPin, PA12, 7); +impl_usart_pin!(USART1, CkPin, PA8, 7); +impl_usart_pin!(USART1, TxPin, PA9, 7); +impl_usart_pin!(USART1, TxPin, PB6, 7); +impl_usart_pin!(USART1, RxPin, PB7, 7); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +impl_usart!(USART2); +impl_usart_pin!(USART2, CtsPin, PA0, 7); +impl_usart_pin!(USART2, RtsPin, PA1, 7); +impl_usart_pin!(USART2, TxPin, PA2, 7); +impl_usart_pin!(USART2, RxPin, PA3, 7); +impl_usart_pin!(USART2, CkPin, PA4, 7); +impl_usart_pin!(USART2, CtsPin, PD3, 7); +impl_usart_pin!(USART2, RtsPin, PD4, 7); +impl_usart_pin!(USART2, TxPin, PD5, 7); +impl_usart_pin!(USART2, RxPin, PD6, 7); +impl_usart_pin!(USART2, CkPin, PD7, 7); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +impl_usart!(USART3); +impl_usart_pin!(USART3, TxPin, PB10, 7); +impl_usart_pin!(USART3, RxPin, PB11, 7); +impl_usart_pin!(USART3, CkPin, PB12, 7); +impl_usart_pin!(USART3, CtsPin, PB13, 7); +impl_usart_pin!(USART3, RtsPin, PB14, 7); +impl_usart_pin!(USART3, TxPin, PC10, 7); +impl_usart_pin!(USART3, RxPin, PC11, 7); +impl_usart_pin!(USART3, CkPin, PC12, 7); +impl_usart_pin!(USART3, CkPin, PD10, 7); +impl_usart_pin!(USART3, CtsPin, PD11, 7); +impl_usart_pin!(USART3, RtsPin, PD12, 7); +impl_usart_pin!(USART3, TxPin, PD8, 7); +impl_usart_pin!(USART3, RxPin, PD9, 7); +pub const USART6: usart::Usart = usart::Usart(0x40011400 as _); +impl_usart!(USART6); +impl_usart_pin!(USART6, TxPin, PC6, 8); +impl_usart_pin!(USART6, RxPin, PC7, 8); +impl_usart_pin!(USART6, CkPin, PC8, 8); +impl_usart_pin!(USART6, RtsPin, PG12, 8); +impl_usart_pin!(USART6, CtsPin, PG13, 8); +impl_usart_pin!(USART6, TxPin, PG14, 8); +impl_usart_pin!(USART6, CtsPin, PG15, 8); +impl_usart_pin!(USART6, CkPin, PG7, 8); +impl_usart_pin!(USART6, RtsPin, PG8, 8); +impl_usart_pin!(USART6, RxPin, PG9, 8); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_f4 as syscfg; +pub use regs::usart_v1 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, CRYP, DAC, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, PJ10, PJ11, PJ12, PJ13, PJ14, - PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, PK11, PK12, PK13, PK14, PK15, - HASH, I2C1, I2C2, I2C3, IWDG, LTDC, QUADSPI, RCC, RNG, RTC, SAI1, SDIO, SPI1, SPI2, SPI3, SPI4, - SYSCFG, TIM1, TIM10, TIM11, TIM12, TIM13, TIM14, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, - TIM9, UART4, UART5, UART7, UART8, USART1, USART2, USART3, USART6, USB_OTG_FS, USB_OTG_HS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, PJ0, PJ1, PJ2, PJ3, PJ4, PJ5, PJ6, PJ7, PJ8, PJ9, + PJ10, PJ11, PJ12, PJ13, PJ14, PJ15, PK0, PK1, PK2, PK3, PK4, PK5, PK6, PK7, PK8, PK9, PK10, + PK11, PK12, PK13, PK14, PK15, EXTI, RNG, SYSCFG, USART1, USART2, USART3, USART6 ); -pub const SYSCFG_BASE: usize = 0x40013800; -pub const EXTI_BASE: usize = 0x40013c00; -pub const GPIO_BASE: usize = 0x40020000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -480,224 +726,3 @@ mod interrupt_vector { Vector { _handler: DSI }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_gpio_pin!(PJ0, 9, 0, EXTI0); -impl_gpio_pin!(PJ1, 9, 1, EXTI1); -impl_gpio_pin!(PJ2, 9, 2, EXTI2); -impl_gpio_pin!(PJ3, 9, 3, EXTI3); -impl_gpio_pin!(PJ4, 9, 4, EXTI4); -impl_gpio_pin!(PJ5, 9, 5, EXTI5); -impl_gpio_pin!(PJ6, 9, 6, EXTI6); -impl_gpio_pin!(PJ7, 9, 7, EXTI7); -impl_gpio_pin!(PJ8, 9, 8, EXTI8); -impl_gpio_pin!(PJ9, 9, 9, EXTI9); -impl_gpio_pin!(PJ10, 9, 10, EXTI10); -impl_gpio_pin!(PJ11, 9, 11, EXTI11); -impl_gpio_pin!(PJ12, 9, 12, EXTI12); -impl_gpio_pin!(PJ13, 9, 13, EXTI13); -impl_gpio_pin!(PJ14, 9, 14, EXTI14); -impl_gpio_pin!(PJ15, 9, 15, EXTI15); -impl_gpio_pin!(PK0, 10, 0, EXTI0); -impl_gpio_pin!(PK1, 10, 1, EXTI1); -impl_gpio_pin!(PK2, 10, 2, EXTI2); -impl_gpio_pin!(PK3, 10, 3, EXTI3); -impl_gpio_pin!(PK4, 10, 4, EXTI4); -impl_gpio_pin!(PK5, 10, 5, EXTI5); -impl_gpio_pin!(PK6, 10, 6, EXTI6); -impl_gpio_pin!(PK7, 10, 7, EXTI7); -impl_gpio_pin!(PK8, 10, 8, EXTI8); -impl_gpio_pin!(PK9, 10, 9, EXTI9); -impl_gpio_pin!(PK10, 10, 10, EXTI10); -impl_gpio_pin!(PK11, 10, 11, EXTI11); -impl_gpio_pin!(PK12, 10, 12, EXTI12); -impl_gpio_pin!(PK13, 10, 13, EXTI13); -impl_gpio_pin!(PK14, 10, 14, EXTI14); -impl_gpio_pin!(PK15, 10, 15, EXTI15); -impl_rng!(0x50060800); -impl_usart!(USART1, 0x40011000); -impl_usart_pin!(USART1, RxPin, PA10, 7); -impl_usart_pin!(USART1, CtsPin, PA11, 7); -impl_usart_pin!(USART1, RtsPin, PA12, 7); -impl_usart_pin!(USART1, CkPin, PA8, 7); -impl_usart_pin!(USART1, TxPin, PA9, 7); -impl_usart_pin!(USART1, TxPin, PB6, 7); -impl_usart_pin!(USART1, RxPin, PB7, 7); -impl_usart!(USART2, 0x40004400); -impl_usart_pin!(USART2, CtsPin, PA0, 7); -impl_usart_pin!(USART2, RtsPin, PA1, 7); -impl_usart_pin!(USART2, TxPin, PA2, 7); -impl_usart_pin!(USART2, RxPin, PA3, 7); -impl_usart_pin!(USART2, CkPin, PA4, 7); -impl_usart_pin!(USART2, CtsPin, PD3, 7); -impl_usart_pin!(USART2, RtsPin, PD4, 7); -impl_usart_pin!(USART2, TxPin, PD5, 7); -impl_usart_pin!(USART2, RxPin, PD6, 7); -impl_usart_pin!(USART2, CkPin, PD7, 7); -impl_usart!(USART3, 0x40004800); -impl_usart_pin!(USART3, TxPin, PB10, 7); -impl_usart_pin!(USART3, RxPin, PB11, 7); -impl_usart_pin!(USART3, CkPin, PB12, 7); -impl_usart_pin!(USART3, CtsPin, PB13, 7); -impl_usart_pin!(USART3, RtsPin, PB14, 7); -impl_usart_pin!(USART3, TxPin, PC10, 7); -impl_usart_pin!(USART3, RxPin, PC11, 7); -impl_usart_pin!(USART3, CkPin, PC12, 7); -impl_usart_pin!(USART3, CkPin, PD10, 7); -impl_usart_pin!(USART3, CtsPin, PD11, 7); -impl_usart_pin!(USART3, RtsPin, PD12, 7); -impl_usart_pin!(USART3, TxPin, PD8, 7); -impl_usart_pin!(USART3, RxPin, PD9, 7); -impl_usart!(USART6, 0x40011400); -impl_usart_pin!(USART6, TxPin, PC6, 8); -impl_usart_pin!(USART6, RxPin, PC7, 8); -impl_usart_pin!(USART6, CkPin, PC8, 8); -impl_usart_pin!(USART6, RtsPin, PG12, 8); -impl_usart_pin!(USART6, CtsPin, PG13, 8); -impl_usart_pin!(USART6, TxPin, PG14, 8); -impl_usart_pin!(USART6, CtsPin, PG15, 8); -impl_usart_pin!(USART6, CkPin, PG7, 8); -impl_usart_pin!(USART6, RtsPin, PG8, 8); -impl_usart_pin!(USART6, RxPin, PG9, 8); diff --git a/embassy-stm32/src/chip/stm32l412c8.rs b/embassy-stm32/src/pac/stm32l412c8.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l412c8.rs rename to embassy-stm32/src/pac/stm32l412c8.rs index e319e06a..1976a782 100644 --- a/embassy-stm32/src/chip/stm32l412c8.rs +++ b/embassy-stm32/src/pac/stm32l412c8.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -335,84 +435,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412cb.rs b/embassy-stm32/src/pac/stm32l412cb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l412cb.rs rename to embassy-stm32/src/pac/stm32l412cb.rs index e319e06a..1976a782 100644 --- a/embassy-stm32/src/chip/stm32l412cb.rs +++ b/embassy-stm32/src/pac/stm32l412cb.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -335,84 +435,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412k8.rs b/embassy-stm32/src/pac/stm32l412k8.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l412k8.rs rename to embassy-stm32/src/pac/stm32l412k8.rs index 88cc20b0..884b1ef0 100644 --- a/embassy-stm32/src/chip/stm32l412k8.rs +++ b/embassy-stm32/src/pac/stm32l412k8.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -334,84 +434,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412kb.rs b/embassy-stm32/src/pac/stm32l412kb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l412kb.rs rename to embassy-stm32/src/pac/stm32l412kb.rs index 88cc20b0..884b1ef0 100644 --- a/embassy-stm32/src/chip/stm32l412kb.rs +++ b/embassy-stm32/src/pac/stm32l412kb.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -334,84 +434,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412r8.rs b/embassy-stm32/src/pac/stm32l412r8.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l412r8.rs rename to embassy-stm32/src/pac/stm32l412r8.rs index e319e06a..1976a782 100644 --- a/embassy-stm32/src/chip/stm32l412r8.rs +++ b/embassy-stm32/src/pac/stm32l412r8.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -335,84 +435,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412rb.rs b/embassy-stm32/src/pac/stm32l412rb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l412rb.rs rename to embassy-stm32/src/pac/stm32l412rb.rs index e319e06a..1976a782 100644 --- a/embassy-stm32/src/chip/stm32l412rb.rs +++ b/embassy-stm32/src/pac/stm32l412rb.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -335,84 +435,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412t8.rs b/embassy-stm32/src/pac/stm32l412t8.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l412t8.rs rename to embassy-stm32/src/pac/stm32l412t8.rs index 88cc20b0..884b1ef0 100644 --- a/embassy-stm32/src/chip/stm32l412t8.rs +++ b/embassy-stm32/src/pac/stm32l412t8.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -334,84 +434,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l412tb.rs b/embassy-stm32/src/pac/stm32l412tb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l412tb.rs rename to embassy-stm32/src/pac/stm32l412tb.rs index 88cc20b0..884b1ef0 100644 --- a/embassy-stm32/src/chip/stm32l412tb.rs +++ b/embassy-stm32/src/pac/stm32l412tb.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, - PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -334,84 +434,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l422cb.rs b/embassy-stm32/src/pac/stm32l422cb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l422cb.rs rename to embassy-stm32/src/pac/stm32l422cb.rs index 015b11be..7b50a713 100644 --- a/embassy-stm32/src/chip/stm32l422cb.rs +++ b/embassy-stm32/src/pac/stm32l422cb.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, - PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -338,84 +438,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l422kb.rs b/embassy-stm32/src/pac/stm32l422kb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l422kb.rs rename to embassy-stm32/src/pac/stm32l422kb.rs index 26decd09..92021a64 100644 --- a/embassy-stm32/src/chip/stm32l422kb.rs +++ b/embassy-stm32/src/pac/stm32l422kb.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, - PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -337,84 +437,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l422rb.rs b/embassy-stm32/src/pac/stm32l422rb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l422rb.rs rename to embassy-stm32/src/pac/stm32l422rb.rs index 015b11be..7b50a713 100644 --- a/embassy-stm32/src/chip/stm32l422rb.rs +++ b/embassy-stm32/src/pac/stm32l422rb.rs @@ -1,19 +1,119 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, - PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SPI1, SPI2, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USART3, USB, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -338,84 +438,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l422tb.rs b/embassy-stm32/src/pac/stm32l422tb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l422tb.rs rename to embassy-stm32/src/pac/stm32l422tb.rs index 26decd09..92021a64 100644 --- a/embassy-stm32/src/chip/stm32l422tb.rs +++ b/embassy-stm32/src/pac/stm32l422tb.rs @@ -1,18 +1,118 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, COMP1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, - PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, - PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, - PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, - PD12, PD13, PD14, PD15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SPI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TSC, USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, + RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -337,84 +437,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431cb.rs b/embassy-stm32/src/pac/stm32l431cb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l431cb.rs rename to embassy-stm32/src/pac/stm32l431cb.rs index c4f33502..c3951c75 100644 --- a/embassy-stm32/src/chip/stm32l431cb.rs +++ b/embassy-stm32/src/pac/stm32l431cb.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, - USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +477,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431cc.rs b/embassy-stm32/src/pac/stm32l431cc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l431cc.rs rename to embassy-stm32/src/pac/stm32l431cc.rs index c4f33502..c3951c75 100644 --- a/embassy-stm32/src/chip/stm32l431cc.rs +++ b/embassy-stm32/src/pac/stm32l431cc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, - USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +477,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431kb.rs b/embassy-stm32/src/pac/stm32l431kb.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l431kb.rs rename to embassy-stm32/src/pac/stm32l431kb.rs index a55b3860..7d974d49 100644 --- a/embassy-stm32/src/chip/stm32l431kb.rs +++ b/embassy-stm32/src/pac/stm32l431kb.rs @@ -1,20 +1,136 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +476,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431kc.rs b/embassy-stm32/src/pac/stm32l431kc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l431kc.rs rename to embassy-stm32/src/pac/stm32l431kc.rs index a55b3860..7d974d49 100644 --- a/embassy-stm32/src/chip/stm32l431kc.rs +++ b/embassy-stm32/src/pac/stm32l431kc.rs @@ -1,20 +1,136 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, RTC, - SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, USART2, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +476,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431rb.rs b/embassy-stm32/src/pac/stm32l431rb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l431rb.rs rename to embassy-stm32/src/pac/stm32l431rb.rs index 902c4eb1..c3951c75 100644 --- a/embassy-stm32/src/chip/stm32l431rb.rs +++ b/embassy-stm32/src/pac/stm32l431rb.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +477,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431rc.rs b/embassy-stm32/src/pac/stm32l431rc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l431rc.rs rename to embassy-stm32/src/pac/stm32l431rc.rs index 902c4eb1..c3951c75 100644 --- a/embassy-stm32/src/chip/stm32l431rc.rs +++ b/embassy-stm32/src/pac/stm32l431rc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +477,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l431vc.rs b/embassy-stm32/src/pac/stm32l431vc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l431vc.rs rename to embassy-stm32/src/pac/stm32l431vc.rs index 902c4eb1..c3951c75 100644 --- a/embassy-stm32/src/chip/stm32l431vc.rs +++ b/embassy-stm32/src/pac/stm32l431vc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, RNG, - RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -360,100 +477,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l432kb.rs b/embassy-stm32/src/pac/stm32l432kb.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l432kb.rs rename to embassy-stm32/src/pac/stm32l432kb.rs index 915bbbd6..e0e534fa 100644 --- a/embassy-stm32/src/chip/stm32l432kb.rs +++ b/embassy-stm32/src/pac/stm32l432kb.rs @@ -1,18 +1,100 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, - USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -346,68 +428,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l432kc.rs b/embassy-stm32/src/pac/stm32l432kc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l432kc.rs rename to embassy-stm32/src/pac/stm32l432kc.rs index 915bbbd6..e0e534fa 100644 --- a/embassy-stm32/src/chip/stm32l432kc.rs +++ b/embassy-stm32/src/pac/stm32l432kc.rs @@ -1,18 +1,100 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, USART1, - USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -346,68 +428,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l433cb.rs b/embassy-stm32/src/pac/stm32l433cb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l433cb.rs rename to embassy-stm32/src/pac/stm32l433cb.rs index 95313ffb..5e10d972 100644 --- a/embassy-stm32/src/chip/stm32l433cb.rs +++ b/embassy-stm32/src/pac/stm32l433cb.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -366,100 +483,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l433cc.rs b/embassy-stm32/src/pac/stm32l433cc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l433cc.rs rename to embassy-stm32/src/pac/stm32l433cc.rs index 95313ffb..5e10d972 100644 --- a/embassy-stm32/src/chip/stm32l433cc.rs +++ b/embassy-stm32/src/pac/stm32l433cc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -366,100 +483,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l433rb.rs b/embassy-stm32/src/pac/stm32l433rb.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l433rb.rs rename to embassy-stm32/src/pac/stm32l433rb.rs index 38d4b831..5e10d972 100644 --- a/embassy-stm32/src/chip/stm32l433rb.rs +++ b/embassy-stm32/src/pac/stm32l433rb.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, - TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -366,100 +483,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l433rc.rs b/embassy-stm32/src/pac/stm32l433rc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l433rc.rs rename to embassy-stm32/src/pac/stm32l433rc.rs index 38d4b831..5e10d972 100644 --- a/embassy-stm32/src/chip/stm32l433rc.rs +++ b/embassy-stm32/src/pac/stm32l433rc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, - TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -366,100 +483,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l433vc.rs b/embassy-stm32/src/pac/stm32l433vc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l433vc.rs rename to embassy-stm32/src/pac/stm32l433vc.rs index 38d4b831..5e10d972 100644 --- a/embassy-stm32/src/chip/stm32l433vc.rs +++ b/embassy-stm32/src/pac/stm32l433vc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, - TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -366,100 +483,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l442kc.rs b/embassy-stm32/src/pac/stm32l442kc.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l442kc.rs rename to embassy-stm32/src/pac/stm32l442kc.rs index 4837adef..2f1bead4 100644 --- a/embassy-stm32/src/chip/stm32l442kc.rs +++ b/embassy-stm32/src/pac/stm32l442kc.rs @@ -1,18 +1,100 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, - PH10, PH11, PH12, PH13, PH14, PH15, I2C1, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SPI1, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, TSC, - USART1, USART2, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, + EXTI, RNG, SYSCFG, USART1, USART2 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -349,68 +431,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l443cc.rs b/embassy-stm32/src/pac/stm32l443cc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l443cc.rs rename to embassy-stm32/src/pac/stm32l443cc.rs index aa21e332..e1860a9d 100644 --- a/embassy-stm32/src/chip/stm32l443cc.rs +++ b/embassy-stm32/src/pac/stm32l443cc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, TIM7, - TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -369,100 +486,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l443rc.rs b/embassy-stm32/src/pac/stm32l443rc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l443rc.rs rename to embassy-stm32/src/pac/stm32l443rc.rs index f3139bc1..e1860a9d 100644 --- a/embassy-stm32/src/chip/stm32l443rc.rs +++ b/embassy-stm32/src/pac/stm32l443rc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, - TIM7, TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -369,100 +486,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l443vc.rs b/embassy-stm32/src/pac/stm32l443vc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l443vc.rs rename to embassy-stm32/src/pac/stm32l443vc.rs index f3139bc1..e1860a9d 100644 --- a/embassy-stm32/src/chip/stm32l443vc.rs +++ b/embassy-stm32/src/pac/stm32l443vc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM6, - TIM7, TSC, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -369,100 +486,3 @@ mod interrupt_vector { Vector { _handler: CRS }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451cc.rs b/embassy-stm32/src/pac/stm32l451cc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451cc.rs rename to embassy-stm32/src/pac/stm32l451cc.rs index 6d846334..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451cc.rs +++ b/embassy-stm32/src/pac/stm32l451cc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, - USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451ce.rs b/embassy-stm32/src/pac/stm32l451ce.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451ce.rs rename to embassy-stm32/src/pac/stm32l451ce.rs index 6d846334..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451ce.rs +++ b/embassy-stm32/src/pac/stm32l451ce.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, - USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451rc.rs b/embassy-stm32/src/pac/stm32l451rc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451rc.rs rename to embassy-stm32/src/pac/stm32l451rc.rs index 464fdc4a..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451rc.rs +++ b/embassy-stm32/src/pac/stm32l451rc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451re.rs b/embassy-stm32/src/pac/stm32l451re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451re.rs rename to embassy-stm32/src/pac/stm32l451re.rs index 464fdc4a..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451re.rs +++ b/embassy-stm32/src/pac/stm32l451re.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451vc.rs b/embassy-stm32/src/pac/stm32l451vc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451vc.rs rename to embassy-stm32/src/pac/stm32l451vc.rs index 464fdc4a..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451vc.rs +++ b/embassy-stm32/src/pac/stm32l451vc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l451ve.rs b/embassy-stm32/src/pac/stm32l451ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l451ve.rs rename to embassy-stm32/src/pac/stm32l451ve.rs index 464fdc4a..29565d76 100644 --- a/embassy-stm32/src/chip/stm32l451ve.rs +++ b/embassy-stm32/src/pac/stm32l451ve.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -378,100 +495,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452cc.rs b/embassy-stm32/src/pac/stm32l452cc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452cc.rs rename to embassy-stm32/src/pac/stm32l452cc.rs index ef4a256e..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452cc.rs +++ b/embassy-stm32/src/pac/stm32l452cc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, - USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452ce.rs b/embassy-stm32/src/pac/stm32l452ce.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452ce.rs rename to embassy-stm32/src/pac/stm32l452ce.rs index ef4a256e..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452ce.rs +++ b/embassy-stm32/src/pac/stm32l452ce.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, UART4, - USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452rc.rs b/embassy-stm32/src/pac/stm32l452rc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452rc.rs rename to embassy-stm32/src/pac/stm32l452rc.rs index 05eaeda9..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452rc.rs +++ b/embassy-stm32/src/pac/stm32l452rc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452re.rs b/embassy-stm32/src/pac/stm32l452re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452re.rs rename to embassy-stm32/src/pac/stm32l452re.rs index 05eaeda9..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452re.rs +++ b/embassy-stm32/src/pac/stm32l452re.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452vc.rs b/embassy-stm32/src/pac/stm32l452vc.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452vc.rs rename to embassy-stm32/src/pac/stm32l452vc.rs index 05eaeda9..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452vc.rs +++ b/embassy-stm32/src/pac/stm32l452vc.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l452ve.rs b/embassy-stm32/src/pac/stm32l452ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l452ve.rs rename to embassy-stm32/src/pac/stm32l452ve.rs index 05eaeda9..e6faacf1 100644 --- a/embassy-stm32/src/chip/stm32l452ve.rs +++ b/embassy-stm32/src/pac/stm32l452ve.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, PA5, - PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, - PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, - PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, - PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, - PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, RCC, - RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -381,100 +498,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l462ce.rs b/embassy-stm32/src/pac/stm32l462ce.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l462ce.rs rename to embassy-stm32/src/pac/stm32l462ce.rs index 65b8842c..374f5bd5 100644 --- a/embassy-stm32/src/chip/stm32l462ce.rs +++ b/embassy-stm32/src/pac/stm32l462ce.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, TSC, - UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -384,100 +501,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l462re.rs b/embassy-stm32/src/pac/stm32l462re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l462re.rs rename to embassy-stm32/src/pac/stm32l462re.rs index 4a4055b5..374f5bd5 100644 --- a/embassy-stm32/src/chip/stm32l462re.rs +++ b/embassy-stm32/src/pac/stm32l462re.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, - TSC, UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -384,100 +501,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l462ve.rs b/embassy-stm32/src/pac/stm32l462ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l462ve.rs rename to embassy-stm32/src/pac/stm32l462ve.rs index 4a4055b5..374f5bd5 100644 --- a/embassy-stm32/src/chip/stm32l462ve.rs +++ b/embassy-stm32/src/pac/stm32l462ve.rs @@ -1,20 +1,137 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, PA4, - PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, - PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, - PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, QUADSPI, - RCC, RNG, RTC, SAI1, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM2, TIM3, TIM6, - TSC, UART4, USART1, USART2, USART3, USB, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PH0, PH1, + PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, + USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -384,100 +501,3 @@ mod interrupt_vector { Vector { _handler: I2C4_ER }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471qe.rs b/embassy-stm32/src/pac/stm32l471qe.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471qe.rs rename to embassy-stm32/src/pac/stm32l471qe.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471qe.rs +++ b/embassy-stm32/src/pac/stm32l471qe.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471qg.rs b/embassy-stm32/src/pac/stm32l471qg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471qg.rs rename to embassy-stm32/src/pac/stm32l471qg.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471qg.rs +++ b/embassy-stm32/src/pac/stm32l471qg.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471re.rs b/embassy-stm32/src/pac/stm32l471re.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471re.rs rename to embassy-stm32/src/pac/stm32l471re.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471re.rs +++ b/embassy-stm32/src/pac/stm32l471re.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471rg.rs b/embassy-stm32/src/pac/stm32l471rg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471rg.rs rename to embassy-stm32/src/pac/stm32l471rg.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471rg.rs +++ b/embassy-stm32/src/pac/stm32l471rg.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471ve.rs b/embassy-stm32/src/pac/stm32l471ve.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471ve.rs rename to embassy-stm32/src/pac/stm32l471ve.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471ve.rs +++ b/embassy-stm32/src/pac/stm32l471ve.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471vg.rs b/embassy-stm32/src/pac/stm32l471vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471vg.rs rename to embassy-stm32/src/pac/stm32l471vg.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471vg.rs +++ b/embassy-stm32/src/pac/stm32l471vg.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471ze.rs b/embassy-stm32/src/pac/stm32l471ze.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471ze.rs rename to embassy-stm32/src/pac/stm32l471ze.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471ze.rs +++ b/embassy-stm32/src/pac/stm32l471ze.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l471zg.rs b/embassy-stm32/src/pac/stm32l471zg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l471zg.rs rename to embassy-stm32/src/pac/stm32l471zg.rs index 192060c1..1d4b4e8b 100644 --- a/embassy-stm32/src/chip/stm32l471zg.rs +++ b/embassy-stm32/src/pac/stm32l471zg.rs @@ -1,22 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -416,132 +567,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475rc.rs b/embassy-stm32/src/pac/stm32l475rc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475rc.rs rename to embassy-stm32/src/pac/stm32l475rc.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475rc.rs +++ b/embassy-stm32/src/pac/stm32l475rc.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475re.rs b/embassy-stm32/src/pac/stm32l475re.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475re.rs rename to embassy-stm32/src/pac/stm32l475re.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475re.rs +++ b/embassy-stm32/src/pac/stm32l475re.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475rg.rs b/embassy-stm32/src/pac/stm32l475rg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475rg.rs rename to embassy-stm32/src/pac/stm32l475rg.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475rg.rs +++ b/embassy-stm32/src/pac/stm32l475rg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475vc.rs b/embassy-stm32/src/pac/stm32l475vc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475vc.rs rename to embassy-stm32/src/pac/stm32l475vc.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475vc.rs +++ b/embassy-stm32/src/pac/stm32l475vc.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475ve.rs b/embassy-stm32/src/pac/stm32l475ve.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475ve.rs rename to embassy-stm32/src/pac/stm32l475ve.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475ve.rs +++ b/embassy-stm32/src/pac/stm32l475ve.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l475vg.rs b/embassy-stm32/src/pac/stm32l475vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l475vg.rs rename to embassy-stm32/src/pac/stm32l475vg.rs index 7a818be1..7d5fbfb8 100644 --- a/embassy-stm32/src/chip/stm32l475vg.rs +++ b/embassy-stm32/src/pac/stm32l475vg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, RNG, - RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, - TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, - WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -420,132 +570,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476je.rs b/embassy-stm32/src/pac/stm32l476je.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476je.rs rename to embassy-stm32/src/pac/stm32l476je.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476je.rs +++ b/embassy-stm32/src/pac/stm32l476je.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476jg.rs b/embassy-stm32/src/pac/stm32l476jg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476jg.rs rename to embassy-stm32/src/pac/stm32l476jg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476jg.rs +++ b/embassy-stm32/src/pac/stm32l476jg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476me.rs b/embassy-stm32/src/pac/stm32l476me.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476me.rs rename to embassy-stm32/src/pac/stm32l476me.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476me.rs +++ b/embassy-stm32/src/pac/stm32l476me.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476mg.rs b/embassy-stm32/src/pac/stm32l476mg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476mg.rs rename to embassy-stm32/src/pac/stm32l476mg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476mg.rs +++ b/embassy-stm32/src/pac/stm32l476mg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476qe.rs b/embassy-stm32/src/pac/stm32l476qe.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476qe.rs rename to embassy-stm32/src/pac/stm32l476qe.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476qe.rs +++ b/embassy-stm32/src/pac/stm32l476qe.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476qg.rs b/embassy-stm32/src/pac/stm32l476qg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476qg.rs rename to embassy-stm32/src/pac/stm32l476qg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476qg.rs +++ b/embassy-stm32/src/pac/stm32l476qg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476rc.rs b/embassy-stm32/src/pac/stm32l476rc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476rc.rs rename to embassy-stm32/src/pac/stm32l476rc.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476rc.rs +++ b/embassy-stm32/src/pac/stm32l476rc.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476re.rs b/embassy-stm32/src/pac/stm32l476re.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476re.rs rename to embassy-stm32/src/pac/stm32l476re.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476re.rs +++ b/embassy-stm32/src/pac/stm32l476re.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476rg.rs b/embassy-stm32/src/pac/stm32l476rg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476rg.rs rename to embassy-stm32/src/pac/stm32l476rg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476rg.rs +++ b/embassy-stm32/src/pac/stm32l476rg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476vc.rs b/embassy-stm32/src/pac/stm32l476vc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476vc.rs rename to embassy-stm32/src/pac/stm32l476vc.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476vc.rs +++ b/embassy-stm32/src/pac/stm32l476vc.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476ve.rs b/embassy-stm32/src/pac/stm32l476ve.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476ve.rs rename to embassy-stm32/src/pac/stm32l476ve.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476ve.rs +++ b/embassy-stm32/src/pac/stm32l476ve.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476vg.rs b/embassy-stm32/src/pac/stm32l476vg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476vg.rs rename to embassy-stm32/src/pac/stm32l476vg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476vg.rs +++ b/embassy-stm32/src/pac/stm32l476vg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476ze.rs b/embassy-stm32/src/pac/stm32l476ze.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476ze.rs rename to embassy-stm32/src/pac/stm32l476ze.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476ze.rs +++ b/embassy-stm32/src/pac/stm32l476ze.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l476zg.rs b/embassy-stm32/src/pac/stm32l476zg.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l476zg.rs rename to embassy-stm32/src/pac/stm32l476zg.rs index d5b27129..2f2bb90b 100644 --- a/embassy-stm32/src/chip/stm32l476zg.rs +++ b/embassy-stm32/src/pac/stm32l476zg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, RCC, - RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l485jc.rs b/embassy-stm32/src/pac/stm32l485jc.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l485jc.rs rename to embassy-stm32/src/pac/stm32l485jc.rs index 829a5b5a..cdd6b31d 100644 --- a/embassy-stm32/src/chip/stm32l485jc.rs +++ b/embassy-stm32/src/pac/stm32l485jc.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, - RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l485je.rs b/embassy-stm32/src/pac/stm32l485je.rs similarity index 87% rename from embassy-stm32/src/chip/stm32l485je.rs rename to embassy-stm32/src/pac/stm32l485je.rs index 829a5b5a..cdd6b31d 100644 --- a/embassy-stm32/src/chip/stm32l485je.rs +++ b/embassy-stm32/src/pac/stm32l485je.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, QUADSPI, - RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, TIM16, TIM17, - TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, USART3, - USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -423,132 +573,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l486jg.rs b/embassy-stm32/src/pac/stm32l486jg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l486jg.rs rename to embassy-stm32/src/pac/stm32l486jg.rs index 27ce5870..aad81718 100644 --- a/embassy-stm32/src/chip/stm32l486jg.rs +++ b/embassy-stm32/src/pac/stm32l486jg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -426,132 +576,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l486qg.rs b/embassy-stm32/src/pac/stm32l486qg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l486qg.rs rename to embassy-stm32/src/pac/stm32l486qg.rs index 27ce5870..aad81718 100644 --- a/embassy-stm32/src/chip/stm32l486qg.rs +++ b/embassy-stm32/src/pac/stm32l486qg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -426,132 +576,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l486rg.rs b/embassy-stm32/src/pac/stm32l486rg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l486rg.rs rename to embassy-stm32/src/pac/stm32l486rg.rs index 27ce5870..aad81718 100644 --- a/embassy-stm32/src/chip/stm32l486rg.rs +++ b/embassy-stm32/src/pac/stm32l486rg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -426,132 +576,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l486vg.rs b/embassy-stm32/src/pac/stm32l486vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l486vg.rs rename to embassy-stm32/src/pac/stm32l486vg.rs index 27ce5870..aad81718 100644 --- a/embassy-stm32/src/chip/stm32l486vg.rs +++ b/embassy-stm32/src/pac/stm32l486vg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -426,132 +576,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l486zg.rs b/embassy-stm32/src/pac/stm32l486zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l486zg.rs rename to embassy-stm32/src/pac/stm32l486zg.rs index 27ce5870..aad81718 100644 --- a/embassy-stm32/src/chip/stm32l486zg.rs +++ b/embassy-stm32/src/pac/stm32l486zg.rs @@ -1,23 +1,173 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, COMP1, COMP2, DAC1, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, I2C1, I2C2, I2C3, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, EXTI, RNG, SYSCFG, USART1, USART2, + USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -426,132 +576,3 @@ mod interrupt_vector { Vector { _handler: FPU }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496ae.rs b/embassy-stm32/src/pac/stm32l496ae.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496ae.rs rename to embassy-stm32/src/pac/stm32l496ae.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496ae.rs +++ b/embassy-stm32/src/pac/stm32l496ae.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496ag.rs b/embassy-stm32/src/pac/stm32l496ag.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496ag.rs rename to embassy-stm32/src/pac/stm32l496ag.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496ag.rs +++ b/embassy-stm32/src/pac/stm32l496ag.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496qe.rs b/embassy-stm32/src/pac/stm32l496qe.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496qe.rs rename to embassy-stm32/src/pac/stm32l496qe.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496qe.rs +++ b/embassy-stm32/src/pac/stm32l496qe.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496qg.rs b/embassy-stm32/src/pac/stm32l496qg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496qg.rs rename to embassy-stm32/src/pac/stm32l496qg.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496qg.rs +++ b/embassy-stm32/src/pac/stm32l496qg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496re.rs b/embassy-stm32/src/pac/stm32l496re.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496re.rs rename to embassy-stm32/src/pac/stm32l496re.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496re.rs +++ b/embassy-stm32/src/pac/stm32l496re.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496rg.rs b/embassy-stm32/src/pac/stm32l496rg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496rg.rs rename to embassy-stm32/src/pac/stm32l496rg.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496rg.rs +++ b/embassy-stm32/src/pac/stm32l496rg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496ve.rs b/embassy-stm32/src/pac/stm32l496ve.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496ve.rs rename to embassy-stm32/src/pac/stm32l496ve.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496ve.rs +++ b/embassy-stm32/src/pac/stm32l496ve.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496vg.rs b/embassy-stm32/src/pac/stm32l496vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496vg.rs rename to embassy-stm32/src/pac/stm32l496vg.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496vg.rs +++ b/embassy-stm32/src/pac/stm32l496vg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496wg.rs b/embassy-stm32/src/pac/stm32l496wg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496wg.rs rename to embassy-stm32/src/pac/stm32l496wg.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496wg.rs +++ b/embassy-stm32/src/pac/stm32l496wg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496ze.rs b/embassy-stm32/src/pac/stm32l496ze.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496ze.rs rename to embassy-stm32/src/pac/stm32l496ze.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496ze.rs +++ b/embassy-stm32/src/pac/stm32l496ze.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l496zg.rs b/embassy-stm32/src/pac/stm32l496zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l496zg.rs rename to embassy-stm32/src/pac/stm32l496zg.rs index e54e0774..b47a6359 100644 --- a/embassy-stm32/src/chip/stm32l496zg.rs +++ b/embassy-stm32/src/pac/stm32l496zg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, - PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, - PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, - PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, OPAMP1, OPAMP2, - QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +626,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4a6ag.rs b/embassy-stm32/src/pac/stm32l4a6ag.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l4a6ag.rs rename to embassy-stm32/src/pac/stm32l4a6ag.rs index a3e227f1..bb345cad 100644 --- a/embassy-stm32/src/chip/stm32l4a6ag.rs +++ b/embassy-stm32/src/pac/stm32l4a6ag.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, - EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, - PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, - PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, - PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, - PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, - PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, - PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, - OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, - TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +629,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4a6qg.rs b/embassy-stm32/src/pac/stm32l4a6qg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l4a6qg.rs rename to embassy-stm32/src/pac/stm32l4a6qg.rs index a3e227f1..bb345cad 100644 --- a/embassy-stm32/src/chip/stm32l4a6qg.rs +++ b/embassy-stm32/src/pac/stm32l4a6qg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, - EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, - PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, - PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, - PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, - PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, - PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, - PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, - OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, - TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +629,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4a6rg.rs b/embassy-stm32/src/pac/stm32l4a6rg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l4a6rg.rs rename to embassy-stm32/src/pac/stm32l4a6rg.rs index a3e227f1..bb345cad 100644 --- a/embassy-stm32/src/chip/stm32l4a6rg.rs +++ b/embassy-stm32/src/pac/stm32l4a6rg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, - EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, - PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, - PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, - PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, - PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, - PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, - PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, - OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, - TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +629,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4a6vg.rs b/embassy-stm32/src/pac/stm32l4a6vg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l4a6vg.rs rename to embassy-stm32/src/pac/stm32l4a6vg.rs index a3e227f1..bb345cad 100644 --- a/embassy-stm32/src/chip/stm32l4a6vg.rs +++ b/embassy-stm32/src/pac/stm32l4a6vg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, - EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, - PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, - PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, - PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, - PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, - PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, - PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, - OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, - TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +629,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4a6zg.rs b/embassy-stm32/src/pac/stm32l4a6zg.rs similarity index 88% rename from embassy-stm32/src/chip/stm32l4a6zg.rs rename to embassy-stm32/src/pac/stm32l4a6zg.rs index a3e227f1..bb345cad 100644 --- a/embassy-stm32/src/chip/stm32l4a6zg.rs +++ b/embassy-stm32/src/pac/stm32l4a6zg.rs @@ -1,24 +1,190 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub const USART1: usart::Usart = usart::Usart(0x40013800 as _); +pub const USART2: usart::Usart = usart::Usart(0x40004400 as _); +pub const USART3: usart::Usart = usart::Usart(0x40004800 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +pub use regs::usart_v2 as usart; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, ADC3, AES, CAN1, CAN2, COMP1, COMP2, DAC1, DCMI, DMA2D, - EXTI, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, - PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, - PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, - PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, - PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, - PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, - PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, - PI12, PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LCD, LPTIM1, LPTIM2, LPUART1, - OPAMP1, OPAMP2, QUADSPI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SWPMI1, SYSCFG, - TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG, USART1, USART2, USART3 ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +629,3 @@ mod interrupt_vector { Vector { _handler: DMA2D }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5ae.rs b/embassy-stm32/src/pac/stm32l4p5ae.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5ae.rs rename to embassy-stm32/src/pac/stm32l4p5ae.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5ae.rs +++ b/embassy-stm32/src/pac/stm32l4p5ae.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5ag.rs b/embassy-stm32/src/pac/stm32l4p5ag.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5ag.rs rename to embassy-stm32/src/pac/stm32l4p5ag.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5ag.rs +++ b/embassy-stm32/src/pac/stm32l4p5ag.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5ce.rs b/embassy-stm32/src/pac/stm32l4p5ce.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5ce.rs rename to embassy-stm32/src/pac/stm32l4p5ce.rs index e3622c0e..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5ce.rs +++ b/embassy-stm32/src/pac/stm32l4p5ce.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5cg.rs b/embassy-stm32/src/pac/stm32l4p5cg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5cg.rs rename to embassy-stm32/src/pac/stm32l4p5cg.rs index e3622c0e..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5cg.rs +++ b/embassy-stm32/src/pac/stm32l4p5cg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5qe.rs b/embassy-stm32/src/pac/stm32l4p5qe.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5qe.rs rename to embassy-stm32/src/pac/stm32l4p5qe.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5qe.rs +++ b/embassy-stm32/src/pac/stm32l4p5qe.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5qg.rs b/embassy-stm32/src/pac/stm32l4p5qg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5qg.rs rename to embassy-stm32/src/pac/stm32l4p5qg.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5qg.rs +++ b/embassy-stm32/src/pac/stm32l4p5qg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5re.rs b/embassy-stm32/src/pac/stm32l4p5re.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5re.rs rename to embassy-stm32/src/pac/stm32l4p5re.rs index c60e2145..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5re.rs +++ b/embassy-stm32/src/pac/stm32l4p5re.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5rg.rs b/embassy-stm32/src/pac/stm32l4p5rg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5rg.rs rename to embassy-stm32/src/pac/stm32l4p5rg.rs index c60e2145..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5rg.rs +++ b/embassy-stm32/src/pac/stm32l4p5rg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5ve.rs b/embassy-stm32/src/pac/stm32l4p5ve.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5ve.rs rename to embassy-stm32/src/pac/stm32l4p5ve.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5ve.rs +++ b/embassy-stm32/src/pac/stm32l4p5ve.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5vg.rs b/embassy-stm32/src/pac/stm32l4p5vg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5vg.rs rename to embassy-stm32/src/pac/stm32l4p5vg.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5vg.rs +++ b/embassy-stm32/src/pac/stm32l4p5vg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5ze.rs b/embassy-stm32/src/pac/stm32l4p5ze.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5ze.rs rename to embassy-stm32/src/pac/stm32l4p5ze.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5ze.rs +++ b/embassy-stm32/src/pac/stm32l4p5ze.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4p5zg.rs b/embassy-stm32/src/pac/stm32l4p5zg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4p5zg.rs rename to embassy-stm32/src/pac/stm32l4p5zg.rs index 66034e53..e057a685 100644 --- a/embassy-stm32/src/chip/stm32l4p5zg.rs +++ b/embassy-stm32/src/pac/stm32l4p5zg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -452,148 +614,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5ag.rs b/embassy-stm32/src/pac/stm32l4q5ag.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5ag.rs rename to embassy-stm32/src/pac/stm32l4q5ag.rs index 64643dc4..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5ag.rs +++ b/embassy-stm32/src/pac/stm32l4q5ag.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5cg.rs b/embassy-stm32/src/pac/stm32l4q5cg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5cg.rs rename to embassy-stm32/src/pac/stm32l4q5cg.rs index 75adefdd..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5cg.rs +++ b/embassy-stm32/src/pac/stm32l4q5cg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, RCC, RNG, RTC, SAI1, SAI2, SDMMC2, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5qg.rs b/embassy-stm32/src/pac/stm32l4q5qg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5qg.rs rename to embassy-stm32/src/pac/stm32l4q5qg.rs index 64643dc4..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5qg.rs +++ b/embassy-stm32/src/pac/stm32l4q5qg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5rg.rs b/embassy-stm32/src/pac/stm32l4q5rg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5rg.rs rename to embassy-stm32/src/pac/stm32l4q5rg.rs index bbf0c47d..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5rg.rs +++ b/embassy-stm32/src/pac/stm32l4q5rg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5vg.rs b/embassy-stm32/src/pac/stm32l4q5vg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5vg.rs rename to embassy-stm32/src/pac/stm32l4q5vg.rs index 64643dc4..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5vg.rs +++ b/embassy-stm32/src/pac/stm32l4q5vg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4q5zg.rs b/embassy-stm32/src/pac/stm32l4q5zg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4q5zg.rs rename to embassy-stm32/src/pac/stm32l4q5zg.rs index 64643dc4..7dcc4d6c 100644 --- a/embassy-stm32/src/chip/stm32l4q5zg.rs +++ b/embassy-stm32/src/pac/stm32l4q5zg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, ADC2, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, PKA, PSSI, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SDMMC2, SPI1, - SPI2, SPI3, SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, - UART4, UART5, USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -458,148 +620,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5ag.rs b/embassy-stm32/src/pac/stm32l4r5ag.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5ag.rs rename to embassy-stm32/src/pac/stm32l4r5ag.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5ag.rs +++ b/embassy-stm32/src/pac/stm32l4r5ag.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5ai.rs b/embassy-stm32/src/pac/stm32l4r5ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5ai.rs rename to embassy-stm32/src/pac/stm32l4r5ai.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5ai.rs +++ b/embassy-stm32/src/pac/stm32l4r5ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5qg.rs b/embassy-stm32/src/pac/stm32l4r5qg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5qg.rs rename to embassy-stm32/src/pac/stm32l4r5qg.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5qg.rs +++ b/embassy-stm32/src/pac/stm32l4r5qg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5qi.rs b/embassy-stm32/src/pac/stm32l4r5qi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5qi.rs rename to embassy-stm32/src/pac/stm32l4r5qi.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5qi.rs +++ b/embassy-stm32/src/pac/stm32l4r5qi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5vg.rs b/embassy-stm32/src/pac/stm32l4r5vg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5vg.rs rename to embassy-stm32/src/pac/stm32l4r5vg.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5vg.rs +++ b/embassy-stm32/src/pac/stm32l4r5vg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5vi.rs b/embassy-stm32/src/pac/stm32l4r5vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5vi.rs rename to embassy-stm32/src/pac/stm32l4r5vi.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5vi.rs +++ b/embassy-stm32/src/pac/stm32l4r5vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5zg.rs b/embassy-stm32/src/pac/stm32l4r5zg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5zg.rs rename to embassy-stm32/src/pac/stm32l4r5zg.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5zg.rs +++ b/embassy-stm32/src/pac/stm32l4r5zg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r5zi.rs b/embassy-stm32/src/pac/stm32l4r5zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r5zi.rs rename to embassy-stm32/src/pac/stm32l4r5zi.rs index 9c98d1f8..a9edcc96 100644 --- a/embassy-stm32/src/chip/stm32l4r5zi.rs +++ b/embassy-stm32/src/pac/stm32l4r5zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, PA3, - PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, - PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, - PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, - PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, - PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, - PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, - PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, - PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, PI14, - PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, OCTOSPIM, - OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, TIM15, - TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, USART2, - USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -451,148 +613,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r7ai.rs b/embassy-stm32/src/pac/stm32l4r7ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r7ai.rs rename to embassy-stm32/src/pac/stm32l4r7ai.rs index d3d635c4..7118408a 100644 --- a/embassy-stm32/src/chip/stm32l4r7ai.rs +++ b/embassy-stm32/src/pac/stm32l4r7ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +622,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r7vi.rs b/embassy-stm32/src/pac/stm32l4r7vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r7vi.rs rename to embassy-stm32/src/pac/stm32l4r7vi.rs index d3d635c4..7118408a 100644 --- a/embassy-stm32/src/chip/stm32l4r7vi.rs +++ b/embassy-stm32/src/pac/stm32l4r7vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +622,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r7zi.rs b/embassy-stm32/src/pac/stm32l4r7zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r7zi.rs rename to embassy-stm32/src/pac/stm32l4r7zi.rs index d3d635c4..7118408a 100644 --- a/embassy-stm32/src/chip/stm32l4r7zi.rs +++ b/embassy-stm32/src/pac/stm32l4r7zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -460,148 +622,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9ag.rs b/embassy-stm32/src/pac/stm32l4r9ag.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9ag.rs rename to embassy-stm32/src/pac/stm32l4r9ag.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9ag.rs +++ b/embassy-stm32/src/pac/stm32l4r9ag.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9ai.rs b/embassy-stm32/src/pac/stm32l4r9ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9ai.rs rename to embassy-stm32/src/pac/stm32l4r9ai.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9ai.rs +++ b/embassy-stm32/src/pac/stm32l4r9ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9vg.rs b/embassy-stm32/src/pac/stm32l4r9vg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9vg.rs rename to embassy-stm32/src/pac/stm32l4r9vg.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9vg.rs +++ b/embassy-stm32/src/pac/stm32l4r9vg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9vi.rs b/embassy-stm32/src/pac/stm32l4r9vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9vi.rs rename to embassy-stm32/src/pac/stm32l4r9vi.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9vi.rs +++ b/embassy-stm32/src/pac/stm32l4r9vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9zg.rs b/embassy-stm32/src/pac/stm32l4r9zg.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9zg.rs rename to embassy-stm32/src/pac/stm32l4r9zg.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9zg.rs +++ b/embassy-stm32/src/pac/stm32l4r9zg.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4r9zi.rs b/embassy-stm32/src/pac/stm32l4r9zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4r9zi.rs rename to embassy-stm32/src/pac/stm32l4r9zi.rs index 9d994d7a..f2636f3d 100644 --- a/embassy-stm32/src/chip/stm32l4r9zi.rs +++ b/embassy-stm32/src/pac/stm32l4r9zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, PA1, - PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, - PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, - PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s5ai.rs b/embassy-stm32/src/pac/stm32l4s5ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s5ai.rs rename to embassy-stm32/src/pac/stm32l4s5ai.rs index cac7ba52..a86c017f 100644 --- a/embassy-stm32/src/chip/stm32l4s5ai.rs +++ b/embassy-stm32/src/pac/stm32l4s5ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -454,148 +616,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s5qi.rs b/embassy-stm32/src/pac/stm32l4s5qi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s5qi.rs rename to embassy-stm32/src/pac/stm32l4s5qi.rs index cac7ba52..a86c017f 100644 --- a/embassy-stm32/src/chip/stm32l4s5qi.rs +++ b/embassy-stm32/src/pac/stm32l4s5qi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -454,148 +616,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s5vi.rs b/embassy-stm32/src/pac/stm32l4s5vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s5vi.rs rename to embassy-stm32/src/pac/stm32l4s5vi.rs index cac7ba52..a86c017f 100644 --- a/embassy-stm32/src/chip/stm32l4s5vi.rs +++ b/embassy-stm32/src/pac/stm32l4s5vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -454,148 +616,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s5zi.rs b/embassy-stm32/src/pac/stm32l4s5zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s5zi.rs rename to embassy-stm32/src/pac/stm32l4s5zi.rs index cac7ba52..a86c017f 100644 --- a/embassy-stm32/src/chip/stm32l4s5zi.rs +++ b/embassy-stm32/src/pac/stm32l4s5zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, PA0, PA1, PA2, - PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, - PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, - PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, - PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, - PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, - PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, - PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, PH12, - PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, PI13, - PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, OCTOSPI1, OCTOSPI2, - OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, SYSCFG, TIM1, - TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, USART1, - USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -454,148 +616,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s7ai.rs b/embassy-stm32/src/pac/stm32l4s7ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s7ai.rs rename to embassy-stm32/src/pac/stm32l4s7ai.rs index 5cef4a85..fbba75ae 100644 --- a/embassy-stm32/src/chip/stm32l4s7ai.rs +++ b/embassy-stm32/src/pac/stm32l4s7ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s7vi.rs b/embassy-stm32/src/pac/stm32l4s7vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s7vi.rs rename to embassy-stm32/src/pac/stm32l4s7vi.rs index 5cef4a85..fbba75ae 100644 --- a/embassy-stm32/src/chip/stm32l4s7vi.rs +++ b/embassy-stm32/src/pac/stm32l4s7vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s7zi.rs b/embassy-stm32/src/pac/stm32l4s7zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s7zi.rs rename to embassy-stm32/src/pac/stm32l4s7zi.rs index 5cef4a85..fbba75ae 100644 --- a/embassy-stm32/src/chip/stm32l4s7zi.rs +++ b/embassy-stm32/src/pac/stm32l4s7zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -463,148 +625,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s9ai.rs b/embassy-stm32/src/pac/stm32l4s9ai.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s9ai.rs rename to embassy-stm32/src/pac/stm32l4s9ai.rs index a79938e3..c19cf10d 100644 --- a/embassy-stm32/src/chip/stm32l4s9ai.rs +++ b/embassy-stm32/src/pac/stm32l4s9ai.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,148 +628,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s9vi.rs b/embassy-stm32/src/pac/stm32l4s9vi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s9vi.rs rename to embassy-stm32/src/pac/stm32l4s9vi.rs index a79938e3..c19cf10d 100644 --- a/embassy-stm32/src/chip/stm32l4s9vi.rs +++ b/embassy-stm32/src/pac/stm32l4s9vi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,148 +628,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/chip/stm32l4s9zi.rs b/embassy-stm32/src/pac/stm32l4s9zi.rs similarity index 89% rename from embassy-stm32/src/chip/stm32l4s9zi.rs rename to embassy-stm32/src/pac/stm32l4s9zi.rs index a79938e3..c19cf10d 100644 --- a/embassy-stm32/src/chip/stm32l4s9zi.rs +++ b/embassy-stm32/src/pac/stm32l4s9zi.rs @@ -1,24 +1,186 @@ +#![allow(dead_code)] +#![allow(unused_imports)] +#![allow(non_snake_case)] + +pub fn GPIO(n: usize) -> gpio::Gpio { + gpio::Gpio((0x48000000 + 0x400 * n) as _) +} +impl_gpio_pin!(PA0, 0, 0, EXTI0); +impl_gpio_pin!(PA1, 0, 1, EXTI1); +impl_gpio_pin!(PA2, 0, 2, EXTI2); +impl_gpio_pin!(PA3, 0, 3, EXTI3); +impl_gpio_pin!(PA4, 0, 4, EXTI4); +impl_gpio_pin!(PA5, 0, 5, EXTI5); +impl_gpio_pin!(PA6, 0, 6, EXTI6); +impl_gpio_pin!(PA7, 0, 7, EXTI7); +impl_gpio_pin!(PA8, 0, 8, EXTI8); +impl_gpio_pin!(PA9, 0, 9, EXTI9); +impl_gpio_pin!(PA10, 0, 10, EXTI10); +impl_gpio_pin!(PA11, 0, 11, EXTI11); +impl_gpio_pin!(PA12, 0, 12, EXTI12); +impl_gpio_pin!(PA13, 0, 13, EXTI13); +impl_gpio_pin!(PA14, 0, 14, EXTI14); +impl_gpio_pin!(PA15, 0, 15, EXTI15); +impl_gpio_pin!(PB0, 1, 0, EXTI0); +impl_gpio_pin!(PB1, 1, 1, EXTI1); +impl_gpio_pin!(PB2, 1, 2, EXTI2); +impl_gpio_pin!(PB3, 1, 3, EXTI3); +impl_gpio_pin!(PB4, 1, 4, EXTI4); +impl_gpio_pin!(PB5, 1, 5, EXTI5); +impl_gpio_pin!(PB6, 1, 6, EXTI6); +impl_gpio_pin!(PB7, 1, 7, EXTI7); +impl_gpio_pin!(PB8, 1, 8, EXTI8); +impl_gpio_pin!(PB9, 1, 9, EXTI9); +impl_gpio_pin!(PB10, 1, 10, EXTI10); +impl_gpio_pin!(PB11, 1, 11, EXTI11); +impl_gpio_pin!(PB12, 1, 12, EXTI12); +impl_gpio_pin!(PB13, 1, 13, EXTI13); +impl_gpio_pin!(PB14, 1, 14, EXTI14); +impl_gpio_pin!(PB15, 1, 15, EXTI15); +impl_gpio_pin!(PC0, 2, 0, EXTI0); +impl_gpio_pin!(PC1, 2, 1, EXTI1); +impl_gpio_pin!(PC2, 2, 2, EXTI2); +impl_gpio_pin!(PC3, 2, 3, EXTI3); +impl_gpio_pin!(PC4, 2, 4, EXTI4); +impl_gpio_pin!(PC5, 2, 5, EXTI5); +impl_gpio_pin!(PC6, 2, 6, EXTI6); +impl_gpio_pin!(PC7, 2, 7, EXTI7); +impl_gpio_pin!(PC8, 2, 8, EXTI8); +impl_gpio_pin!(PC9, 2, 9, EXTI9); +impl_gpio_pin!(PC10, 2, 10, EXTI10); +impl_gpio_pin!(PC11, 2, 11, EXTI11); +impl_gpio_pin!(PC12, 2, 12, EXTI12); +impl_gpio_pin!(PC13, 2, 13, EXTI13); +impl_gpio_pin!(PC14, 2, 14, EXTI14); +impl_gpio_pin!(PC15, 2, 15, EXTI15); +impl_gpio_pin!(PD0, 3, 0, EXTI0); +impl_gpio_pin!(PD1, 3, 1, EXTI1); +impl_gpio_pin!(PD2, 3, 2, EXTI2); +impl_gpio_pin!(PD3, 3, 3, EXTI3); +impl_gpio_pin!(PD4, 3, 4, EXTI4); +impl_gpio_pin!(PD5, 3, 5, EXTI5); +impl_gpio_pin!(PD6, 3, 6, EXTI6); +impl_gpio_pin!(PD7, 3, 7, EXTI7); +impl_gpio_pin!(PD8, 3, 8, EXTI8); +impl_gpio_pin!(PD9, 3, 9, EXTI9); +impl_gpio_pin!(PD10, 3, 10, EXTI10); +impl_gpio_pin!(PD11, 3, 11, EXTI11); +impl_gpio_pin!(PD12, 3, 12, EXTI12); +impl_gpio_pin!(PD13, 3, 13, EXTI13); +impl_gpio_pin!(PD14, 3, 14, EXTI14); +impl_gpio_pin!(PD15, 3, 15, EXTI15); +impl_gpio_pin!(PE0, 4, 0, EXTI0); +impl_gpio_pin!(PE1, 4, 1, EXTI1); +impl_gpio_pin!(PE2, 4, 2, EXTI2); +impl_gpio_pin!(PE3, 4, 3, EXTI3); +impl_gpio_pin!(PE4, 4, 4, EXTI4); +impl_gpio_pin!(PE5, 4, 5, EXTI5); +impl_gpio_pin!(PE6, 4, 6, EXTI6); +impl_gpio_pin!(PE7, 4, 7, EXTI7); +impl_gpio_pin!(PE8, 4, 8, EXTI8); +impl_gpio_pin!(PE9, 4, 9, EXTI9); +impl_gpio_pin!(PE10, 4, 10, EXTI10); +impl_gpio_pin!(PE11, 4, 11, EXTI11); +impl_gpio_pin!(PE12, 4, 12, EXTI12); +impl_gpio_pin!(PE13, 4, 13, EXTI13); +impl_gpio_pin!(PE14, 4, 14, EXTI14); +impl_gpio_pin!(PE15, 4, 15, EXTI15); +impl_gpio_pin!(PF0, 5, 0, EXTI0); +impl_gpio_pin!(PF1, 5, 1, EXTI1); +impl_gpio_pin!(PF2, 5, 2, EXTI2); +impl_gpio_pin!(PF3, 5, 3, EXTI3); +impl_gpio_pin!(PF4, 5, 4, EXTI4); +impl_gpio_pin!(PF5, 5, 5, EXTI5); +impl_gpio_pin!(PF6, 5, 6, EXTI6); +impl_gpio_pin!(PF7, 5, 7, EXTI7); +impl_gpio_pin!(PF8, 5, 8, EXTI8); +impl_gpio_pin!(PF9, 5, 9, EXTI9); +impl_gpio_pin!(PF10, 5, 10, EXTI10); +impl_gpio_pin!(PF11, 5, 11, EXTI11); +impl_gpio_pin!(PF12, 5, 12, EXTI12); +impl_gpio_pin!(PF13, 5, 13, EXTI13); +impl_gpio_pin!(PF14, 5, 14, EXTI14); +impl_gpio_pin!(PF15, 5, 15, EXTI15); +impl_gpio_pin!(PG0, 6, 0, EXTI0); +impl_gpio_pin!(PG1, 6, 1, EXTI1); +impl_gpio_pin!(PG2, 6, 2, EXTI2); +impl_gpio_pin!(PG3, 6, 3, EXTI3); +impl_gpio_pin!(PG4, 6, 4, EXTI4); +impl_gpio_pin!(PG5, 6, 5, EXTI5); +impl_gpio_pin!(PG6, 6, 6, EXTI6); +impl_gpio_pin!(PG7, 6, 7, EXTI7); +impl_gpio_pin!(PG8, 6, 8, EXTI8); +impl_gpio_pin!(PG9, 6, 9, EXTI9); +impl_gpio_pin!(PG10, 6, 10, EXTI10); +impl_gpio_pin!(PG11, 6, 11, EXTI11); +impl_gpio_pin!(PG12, 6, 12, EXTI12); +impl_gpio_pin!(PG13, 6, 13, EXTI13); +impl_gpio_pin!(PG14, 6, 14, EXTI14); +impl_gpio_pin!(PG15, 6, 15, EXTI15); +impl_gpio_pin!(PH0, 7, 0, EXTI0); +impl_gpio_pin!(PH1, 7, 1, EXTI1); +impl_gpio_pin!(PH2, 7, 2, EXTI2); +impl_gpio_pin!(PH3, 7, 3, EXTI3); +impl_gpio_pin!(PH4, 7, 4, EXTI4); +impl_gpio_pin!(PH5, 7, 5, EXTI5); +impl_gpio_pin!(PH6, 7, 6, EXTI6); +impl_gpio_pin!(PH7, 7, 7, EXTI7); +impl_gpio_pin!(PH8, 7, 8, EXTI8); +impl_gpio_pin!(PH9, 7, 9, EXTI9); +impl_gpio_pin!(PH10, 7, 10, EXTI10); +impl_gpio_pin!(PH11, 7, 11, EXTI11); +impl_gpio_pin!(PH12, 7, 12, EXTI12); +impl_gpio_pin!(PH13, 7, 13, EXTI13); +impl_gpio_pin!(PH14, 7, 14, EXTI14); +impl_gpio_pin!(PH15, 7, 15, EXTI15); +impl_gpio_pin!(PI0, 8, 0, EXTI0); +impl_gpio_pin!(PI1, 8, 1, EXTI1); +impl_gpio_pin!(PI2, 8, 2, EXTI2); +impl_gpio_pin!(PI3, 8, 3, EXTI3); +impl_gpio_pin!(PI4, 8, 4, EXTI4); +impl_gpio_pin!(PI5, 8, 5, EXTI5); +impl_gpio_pin!(PI6, 8, 6, EXTI6); +impl_gpio_pin!(PI7, 8, 7, EXTI7); +impl_gpio_pin!(PI8, 8, 8, EXTI8); +impl_gpio_pin!(PI9, 8, 9, EXTI9); +impl_gpio_pin!(PI10, 8, 10, EXTI10); +impl_gpio_pin!(PI11, 8, 11, EXTI11); +impl_gpio_pin!(PI12, 8, 12, EXTI12); +impl_gpio_pin!(PI13, 8, 13, EXTI13); +impl_gpio_pin!(PI14, 8, 14, EXTI14); +impl_gpio_pin!(PI15, 8, 15, EXTI15); +pub const EXTI: exti::Exti = exti::Exti(0x40010400 as _); +pub const GPIOA: gpio::Gpio = gpio::Gpio(0x48000000 as _); +pub const GPIOB: gpio::Gpio = gpio::Gpio(0x48000400 as _); +pub const GPIOC: gpio::Gpio = gpio::Gpio(0x48000800 as _); +pub const GPIOD: gpio::Gpio = gpio::Gpio(0x48000c00 as _); +pub const GPIOE: gpio::Gpio = gpio::Gpio(0x48001000 as _); +pub const GPIOF: gpio::Gpio = gpio::Gpio(0x48001400 as _); +pub const GPIOG: gpio::Gpio = gpio::Gpio(0x48001800 as _); +pub const GPIOH: gpio::Gpio = gpio::Gpio(0x48001c00 as _); +pub const GPIOI: gpio::Gpio = gpio::Gpio(0x48002000 as _); +pub const RNG: rng::Rng = rng::Rng(0x50060800 as _); +impl_rng!(RNG); +pub const SYSCFG: syscfg::Syscfg = syscfg::Syscfg(0x40010000 as _); +pub use regs::exti_v1 as exti; +pub use regs::gpio_v2 as gpio; +pub use regs::rng_v1 as rng; +pub use regs::syscfg_l4 as syscfg; +mod regs; use embassy_extras::peripherals; +pub use regs::generic; peripherals!( EXTI0, EXTI1, EXTI2, EXTI3, EXTI4, EXTI5, EXTI6, EXTI7, EXTI8, EXTI9, EXTI10, EXTI11, EXTI12, - EXTI13, EXTI14, EXTI15, ADC1, AES, CAN1, COMP1, COMP2, DAC1, DCMI, DMA2D, EXTI, GFXMMU, PA0, - PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, - PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, - PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, - PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, - PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, PG4, PG5, PG6, PG7, PG8, PG9, PG10, - PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, PH6, PH7, PH8, PH9, PH10, PH11, - PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, PI8, PI9, PI10, PI11, PI12, - PI13, PI14, PI15, HASH, I2C1, I2C2, I2C3, I2C4, IWDG, LPTIM1, LPTIM2, LPUART1, LTDC, OCTOSPI1, - OCTOSPI2, OCTOSPIM, OPAMP1, OPAMP2, RCC, RNG, RTC, SAI1, SAI2, SDMMC1, SPI1, SPI2, SPI3, - SYSCFG, TIM1, TIM15, TIM16, TIM17, TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM8, TSC, UART4, UART5, - USART1, USART2, USART3, USB_OTG_FS, WWDG + EXTI13, EXTI14, EXTI15, PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, + PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, + PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, + PC15, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PF0, PF1, + PF2, PF3, PF4, PF5, PF6, PF7, PF8, PF9, PF10, PF11, PF12, PF13, PF14, PF15, PG0, PG1, PG2, PG3, + PG4, PG5, PG6, PG7, PG8, PG9, PG10, PG11, PG12, PG13, PG14, PG15, PH0, PH1, PH2, PH3, PH4, PH5, + PH6, PH7, PH8, PH9, PH10, PH11, PH12, PH13, PH14, PH15, PI0, PI1, PI2, PI3, PI4, PI5, PI6, PI7, + PI8, PI9, PI10, PI11, PI12, PI13, PI14, PI15, EXTI, RNG, SYSCFG ); -pub const SYSCFG_BASE: usize = 0x40010000; -pub const EXTI_BASE: usize = 0x40010400; -pub const GPIO_BASE: usize = 0x48000000; -pub const GPIO_STRIDE: usize = 0x400; pub mod interrupt { pub use cortex_m::interrupt::{CriticalSection, Mutex}; @@ -466,148 +628,3 @@ mod interrupt_vector { }, ]; } -impl_gpio_pin!(PA0, 0, 0, EXTI0); -impl_gpio_pin!(PA1, 0, 1, EXTI1); -impl_gpio_pin!(PA2, 0, 2, EXTI2); -impl_gpio_pin!(PA3, 0, 3, EXTI3); -impl_gpio_pin!(PA4, 0, 4, EXTI4); -impl_gpio_pin!(PA5, 0, 5, EXTI5); -impl_gpio_pin!(PA6, 0, 6, EXTI6); -impl_gpio_pin!(PA7, 0, 7, EXTI7); -impl_gpio_pin!(PA8, 0, 8, EXTI8); -impl_gpio_pin!(PA9, 0, 9, EXTI9); -impl_gpio_pin!(PA10, 0, 10, EXTI10); -impl_gpio_pin!(PA11, 0, 11, EXTI11); -impl_gpio_pin!(PA12, 0, 12, EXTI12); -impl_gpio_pin!(PA13, 0, 13, EXTI13); -impl_gpio_pin!(PA14, 0, 14, EXTI14); -impl_gpio_pin!(PA15, 0, 15, EXTI15); -impl_gpio_pin!(PB0, 1, 0, EXTI0); -impl_gpio_pin!(PB1, 1, 1, EXTI1); -impl_gpio_pin!(PB2, 1, 2, EXTI2); -impl_gpio_pin!(PB3, 1, 3, EXTI3); -impl_gpio_pin!(PB4, 1, 4, EXTI4); -impl_gpio_pin!(PB5, 1, 5, EXTI5); -impl_gpio_pin!(PB6, 1, 6, EXTI6); -impl_gpio_pin!(PB7, 1, 7, EXTI7); -impl_gpio_pin!(PB8, 1, 8, EXTI8); -impl_gpio_pin!(PB9, 1, 9, EXTI9); -impl_gpio_pin!(PB10, 1, 10, EXTI10); -impl_gpio_pin!(PB11, 1, 11, EXTI11); -impl_gpio_pin!(PB12, 1, 12, EXTI12); -impl_gpio_pin!(PB13, 1, 13, EXTI13); -impl_gpio_pin!(PB14, 1, 14, EXTI14); -impl_gpio_pin!(PB15, 1, 15, EXTI15); -impl_gpio_pin!(PC0, 2, 0, EXTI0); -impl_gpio_pin!(PC1, 2, 1, EXTI1); -impl_gpio_pin!(PC2, 2, 2, EXTI2); -impl_gpio_pin!(PC3, 2, 3, EXTI3); -impl_gpio_pin!(PC4, 2, 4, EXTI4); -impl_gpio_pin!(PC5, 2, 5, EXTI5); -impl_gpio_pin!(PC6, 2, 6, EXTI6); -impl_gpio_pin!(PC7, 2, 7, EXTI7); -impl_gpio_pin!(PC8, 2, 8, EXTI8); -impl_gpio_pin!(PC9, 2, 9, EXTI9); -impl_gpio_pin!(PC10, 2, 10, EXTI10); -impl_gpio_pin!(PC11, 2, 11, EXTI11); -impl_gpio_pin!(PC12, 2, 12, EXTI12); -impl_gpio_pin!(PC13, 2, 13, EXTI13); -impl_gpio_pin!(PC14, 2, 14, EXTI14); -impl_gpio_pin!(PC15, 2, 15, EXTI15); -impl_gpio_pin!(PD0, 3, 0, EXTI0); -impl_gpio_pin!(PD1, 3, 1, EXTI1); -impl_gpio_pin!(PD2, 3, 2, EXTI2); -impl_gpio_pin!(PD3, 3, 3, EXTI3); -impl_gpio_pin!(PD4, 3, 4, EXTI4); -impl_gpio_pin!(PD5, 3, 5, EXTI5); -impl_gpio_pin!(PD6, 3, 6, EXTI6); -impl_gpio_pin!(PD7, 3, 7, EXTI7); -impl_gpio_pin!(PD8, 3, 8, EXTI8); -impl_gpio_pin!(PD9, 3, 9, EXTI9); -impl_gpio_pin!(PD10, 3, 10, EXTI10); -impl_gpio_pin!(PD11, 3, 11, EXTI11); -impl_gpio_pin!(PD12, 3, 12, EXTI12); -impl_gpio_pin!(PD13, 3, 13, EXTI13); -impl_gpio_pin!(PD14, 3, 14, EXTI14); -impl_gpio_pin!(PD15, 3, 15, EXTI15); -impl_gpio_pin!(PE0, 4, 0, EXTI0); -impl_gpio_pin!(PE1, 4, 1, EXTI1); -impl_gpio_pin!(PE2, 4, 2, EXTI2); -impl_gpio_pin!(PE3, 4, 3, EXTI3); -impl_gpio_pin!(PE4, 4, 4, EXTI4); -impl_gpio_pin!(PE5, 4, 5, EXTI5); -impl_gpio_pin!(PE6, 4, 6, EXTI6); -impl_gpio_pin!(PE7, 4, 7, EXTI7); -impl_gpio_pin!(PE8, 4, 8, EXTI8); -impl_gpio_pin!(PE9, 4, 9, EXTI9); -impl_gpio_pin!(PE10, 4, 10, EXTI10); -impl_gpio_pin!(PE11, 4, 11, EXTI11); -impl_gpio_pin!(PE12, 4, 12, EXTI12); -impl_gpio_pin!(PE13, 4, 13, EXTI13); -impl_gpio_pin!(PE14, 4, 14, EXTI14); -impl_gpio_pin!(PE15, 4, 15, EXTI15); -impl_gpio_pin!(PF0, 5, 0, EXTI0); -impl_gpio_pin!(PF1, 5, 1, EXTI1); -impl_gpio_pin!(PF2, 5, 2, EXTI2); -impl_gpio_pin!(PF3, 5, 3, EXTI3); -impl_gpio_pin!(PF4, 5, 4, EXTI4); -impl_gpio_pin!(PF5, 5, 5, EXTI5); -impl_gpio_pin!(PF6, 5, 6, EXTI6); -impl_gpio_pin!(PF7, 5, 7, EXTI7); -impl_gpio_pin!(PF8, 5, 8, EXTI8); -impl_gpio_pin!(PF9, 5, 9, EXTI9); -impl_gpio_pin!(PF10, 5, 10, EXTI10); -impl_gpio_pin!(PF11, 5, 11, EXTI11); -impl_gpio_pin!(PF12, 5, 12, EXTI12); -impl_gpio_pin!(PF13, 5, 13, EXTI13); -impl_gpio_pin!(PF14, 5, 14, EXTI14); -impl_gpio_pin!(PF15, 5, 15, EXTI15); -impl_gpio_pin!(PG0, 6, 0, EXTI0); -impl_gpio_pin!(PG1, 6, 1, EXTI1); -impl_gpio_pin!(PG2, 6, 2, EXTI2); -impl_gpio_pin!(PG3, 6, 3, EXTI3); -impl_gpio_pin!(PG4, 6, 4, EXTI4); -impl_gpio_pin!(PG5, 6, 5, EXTI5); -impl_gpio_pin!(PG6, 6, 6, EXTI6); -impl_gpio_pin!(PG7, 6, 7, EXTI7); -impl_gpio_pin!(PG8, 6, 8, EXTI8); -impl_gpio_pin!(PG9, 6, 9, EXTI9); -impl_gpio_pin!(PG10, 6, 10, EXTI10); -impl_gpio_pin!(PG11, 6, 11, EXTI11); -impl_gpio_pin!(PG12, 6, 12, EXTI12); -impl_gpio_pin!(PG13, 6, 13, EXTI13); -impl_gpio_pin!(PG14, 6, 14, EXTI14); -impl_gpio_pin!(PG15, 6, 15, EXTI15); -impl_gpio_pin!(PH0, 7, 0, EXTI0); -impl_gpio_pin!(PH1, 7, 1, EXTI1); -impl_gpio_pin!(PH2, 7, 2, EXTI2); -impl_gpio_pin!(PH3, 7, 3, EXTI3); -impl_gpio_pin!(PH4, 7, 4, EXTI4); -impl_gpio_pin!(PH5, 7, 5, EXTI5); -impl_gpio_pin!(PH6, 7, 6, EXTI6); -impl_gpio_pin!(PH7, 7, 7, EXTI7); -impl_gpio_pin!(PH8, 7, 8, EXTI8); -impl_gpio_pin!(PH9, 7, 9, EXTI9); -impl_gpio_pin!(PH10, 7, 10, EXTI10); -impl_gpio_pin!(PH11, 7, 11, EXTI11); -impl_gpio_pin!(PH12, 7, 12, EXTI12); -impl_gpio_pin!(PH13, 7, 13, EXTI13); -impl_gpio_pin!(PH14, 7, 14, EXTI14); -impl_gpio_pin!(PH15, 7, 15, EXTI15); -impl_gpio_pin!(PI0, 8, 0, EXTI0); -impl_gpio_pin!(PI1, 8, 1, EXTI1); -impl_gpio_pin!(PI2, 8, 2, EXTI2); -impl_gpio_pin!(PI3, 8, 3, EXTI3); -impl_gpio_pin!(PI4, 8, 4, EXTI4); -impl_gpio_pin!(PI5, 8, 5, EXTI5); -impl_gpio_pin!(PI6, 8, 6, EXTI6); -impl_gpio_pin!(PI7, 8, 7, EXTI7); -impl_gpio_pin!(PI8, 8, 8, EXTI8); -impl_gpio_pin!(PI9, 8, 9, EXTI9); -impl_gpio_pin!(PI10, 8, 10, EXTI10); -impl_gpio_pin!(PI11, 8, 11, EXTI11); -impl_gpio_pin!(PI12, 8, 12, EXTI12); -impl_gpio_pin!(PI13, 8, 13, EXTI13); -impl_gpio_pin!(PI14, 8, 14, EXTI14); -impl_gpio_pin!(PI15, 8, 15, EXTI15); -impl_rng!(0x50060800); diff --git a/embassy-stm32/src/rng.rs b/embassy-stm32/src/rng.rs index a618bd09..f3f0ce1f 100644 --- a/embassy-stm32/src/rng.rs +++ b/embassy-stm32/src/rng.rs @@ -1,4 +1,4 @@ -use crate::pac::rng_v1::{regs, Rng}; +use crate::pac::rng::{regs, Rng}; use crate::peripherals; use embassy::util::Unborrow; use embassy_extras::unborrow; @@ -8,26 +8,23 @@ pub struct Random { } impl Random { - pub fn new(inner: impl Unborrow) -> Self { + pub fn new(inner: impl Unborrow) -> Self { unborrow!(inner); - Self { - inner, - } + Self { inner } } } -use embassy::traits::rng::Rng as RngTrait; use core::future::Future; use core::marker::PhantomData; +use embassy::traits::rng::Rng as RngTrait; -impl RngTrait for Random { +impl RngTrait for Random { type Error = (); - type RngFuture<'a> where Self: 'a = impl Future>; + #[rustfmt::skip] + type RngFuture<'a> where Self: 'a = impl Future>; fn fill<'a>(&'a mut self, dest: &'a mut [u8]) -> Self::RngFuture<'a> { - async move { - Ok(()) - } + async move { Ok(()) } } } @@ -42,13 +39,13 @@ pub(crate) mod sealed { pub trait Instance: sealed::Instance {} macro_rules! impl_rng { - ($addr:expr) => { - impl crate::rng::sealed::Instance for peripherals::RNG { - fn regs(&self) -> crate::pac::rng_v1::Rng { - crate::pac::rng_v1::Rng($addr as _) + ($inst:ident) => { + impl crate::rng::sealed::Instance for peripherals::$inst { + fn regs(&self) -> crate::pac::rng::Rng { + crate::pac::$inst } } - impl crate::rng::Instance for peripherals::RNG {} - } -} \ No newline at end of file + impl crate::rng::Instance for peripherals::$inst {} + }; +} diff --git a/embassy-stm32/src/usart.rs b/embassy-stm32/src/usart.rs index 3d9e3f54..2232ac57 100644 --- a/embassy-stm32/src/usart.rs +++ b/embassy-stm32/src/usart.rs @@ -4,7 +4,7 @@ use embassy::util::Unborrow; use embassy_extras::unborrow; use crate::gpio::{NoPin, Pin}; -use crate::pac::usart_v1::{regs, vals, Usart}; +use crate::pac::usart::{regs, vals, Usart}; use crate::peripherals; #[non_exhaustive] @@ -99,10 +99,10 @@ impl sealed::CkPin for NoPin { impl CkPin for NoPin {} macro_rules! impl_usart { - ($inst:ident, $addr:expr) => { + ($inst:ident) => { impl crate::usart::sealed::Instance for peripherals::$inst { - fn regs(&self) -> crate::pac::usart_v1::Usart { - crate::pac::usart_v1::Usart($addr as _) + fn regs(&self) -> crate::pac::usart::Usart { + crate::pac::$inst } } impl crate::usart::Instance for peripherals::$inst {} diff --git a/embassy-stm32/stm32-data b/embassy-stm32/stm32-data index 0ffc2d50..062fa811 160000 --- a/embassy-stm32/stm32-data +++ b/embassy-stm32/stm32-data @@ -1 +1 @@ -Subproject commit 0ffc2d50063823ceb77f03dece80f9708c7f60fe +Subproject commit 062fa81175065c6ca99f2b40214cce30d27b4c2f