{"record":{"id":"3682d2a3fc92782f","repo":"embassy-rs/embassy","slug":"watchdogchannels-all-is-not-supported-for-awd3-u","errorCode":null,"errorMessage":"WatchdogChannels::All is not supported for AWD3; use Channels(0x3FFF) to monitor all 14 channels","messagePattern":"WatchdogChannels::All is not supported for AWD3; use Channels\\(0x3FFF\\) to monitor all 14 channels","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"embassy-stm32/src/adc/watchdog_adc4.rs","lineNumber":334,"sourceCode":"                });\n\n                T::regs().awd3cr().modify(|w| {\n                    #[cfg(stm32wba)]\n                    {\n                        for n in 0..14usize {\n                            w.set_awd3ch(n, false);\n                        }\n                        match channels {\n                            WatchdogChannels::Single(ch) => w.set_awd3ch(ch as usize, true),\n                            WatchdogChannels::Channels(mask) => {\n                                for n in 0..14usize {\n                                    if mask & (1 << n) != 0 {\n                                        w.set_awd3ch(n, true);\n                                    }\n                                }\n                            }\n                            WatchdogChannels::All => {\n                                panic!(\"WatchdogChannels::All is not supported for AWD3; use Channels(0x3FFF) to monitor all 14 channels\");\n                            }\n                        }\n                    }\n                    #[cfg(stm32u5)]\n                    {\n                        for n in 0..24usize {\n                            w.set_awdch(n, false);\n                        }\n                        match channels {\n                            WatchdogChannels::Single(ch) => w.set_awdch(ch as usize, true),\n                            WatchdogChannels::Channels(mask) => {\n                                for n in 0..24usize {\n                                    if mask & (1 << n) != 0 {\n                                        w.set_awdch(n, true);\n                                    }\n                                }\n                            }\n                            WatchdogChannels::All => {","sourceCodeStart":316,"sourceCodeEnd":352,"githubUrl":"https://github.com/embassy-rs/embassy/blob/463a07b963419a1bfe61d5d597c44acb810afb8b/embassy-stm32/src/adc/watchdog_adc4.rs#L316-L352","documentation":"The AWD3 analog watchdog on non-U5 ADC4-family STM32 parts cannot represent 'monitor all channels' in its 14-bit channel mask register, so embassy-stm32 panics on WatchdogChannels::All during setup_awd. An explicit Channels bitmask (0x3FFF for all 14 channels) must be given instead.","triggerScenarios":"Setting up the third analog watchdog (AWD3) on an ADC4-family non-U5 chip with WatchdogChannels::All in the watchdog configuration.","commonSituations":"Configuring multiple watchdogs (AWD1/AWD2/AWD3) from shared code that uses All everywhere; assuming AWD3 behaves like AWD1 with respect to channel selection.","solutions":["Replace WatchdogChannels::All with WatchdogChannels::Channels(0x3FFF) to monitor all 14 channels","Pass an explicit narrower mask for only the channels being watched","Restructure shared configuration code so only AWD1 receives WatchdogChannels::All"],"exampleFix":"// before\nlet cfg = WatchdogConfig { awd: Awd::Awd3, channels: WatchdogChannels::All, .. };\n// after\nlet cfg = WatchdogConfig { awd: Awd::Awd3, channels: WatchdogChannels::Channels(0x3FFF), .. };","handlingStrategy":"validation","validationCode":"// Allow All only for AWD1: if awd != Awd::Awd1 { channels = WatchdogChannels::Channels(0x3FFF); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Restrict WatchdogChannels::All to AWD1 in shared config helpers","Prefer explicit channel masks for AWD2/AWD3","Add unit tests covering each watchdog instance's configuration"],"tags":["embedded","stm32","adc","watchdog","panic"],"backgroundTag":"unsupported-operation","analyzedSha":"463a07b963419a1bfe61d5d597c44acb810afb8b","analyzedAt":"2026-09-10T13:38:26.660Z","contentChangedAt":"2026-09-10T13:38:26.660Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}