# {For Open On-Chip Debugger 0.6.0-dev-00477-gf1c0133 } # { Display the stm32f4xx registers associated with RTC } # { http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/DM00031020.pdf } source [find bitsbytes.tcl] source [find memory.tcl] puts "\n===== RTC =====" set rtc_base 0x40002800 foreach nameaddr {{rtc_tr 0} {rtc_dr 4} {rtc_cr 8} {rtc_isr 12} {rtc_prer 0x10} {rtc_wutr 0x14} {rtc_calibr 0x18} {rtc_alrmar 0x1C} {rtc_alrmbr 0x20} {rtc_wpr 0x24} {rtc_ssr 0x28} {rtc_shiftr 0x2C} {rtc_tstr 0x30} {rtc_tsdr 0x34} {rtc_tsssr 0x38} {rtc_calr 0x3C} {rtc_tafcr 0x40} {rtc_alrmassr 0x44} {rtc_alrmbssr 0x48} {rtc_bkp0r 0x50} } { set [lindex $nameaddr 0] [memread32 [expr $rtc_base + [lindex $nameaddr 1]]] } proc labelled_bits {var masklabels} { foreach ml $masklabels { if {$var & [lindex $ml 0]} { puts -nonewline " [lindex $ml 1]" } } } proc hexline {var label} { puts [format "$label\t0x%08x" $var] } puts -nonewline [format "TR\t0x%08x" $rtc_tr] puts -nonewline [format " HT=%d" [expr $rtc_tr >> 20 & 3]] puts -nonewline [format " HU=%d" [expr $rtc_tr >> 16 & 0xF]] puts -nonewline [format " MNT=%d" [expr $rtc_tr >> 12 & 7]] puts -nonewline [format " MNU=%d" [expr $rtc_tr >> 8 & 0xF]] puts -nonewline [format " ST=%d" [expr $rtc_tr >> 4 & 7]] puts -nonewline [format " SU=%d" [expr $rtc_tr & 0xF]] puts "" puts -nonewline [format "DR\t0x%08x" $rtc_dr] puts -nonewline [format " YT=%d" [expr $rtc_dr >> 20 & 3]] puts -nonewline [format " YU=%d" [expr $rtc_dr >> 16 & 0xF]] puts -nonewline [format " WDU=%d" [expr $rtc_dr >> 13 & 7]] puts -nonewline [format " MT=%d" [expr $rtc_dr >> 12 & 1]] puts -nonewline [format " MU=%d" [expr $rtc_dr >> 8 & 0xF]] puts -nonewline [format " DT=%d" [expr $rtc_dr >> 4 & 3]] puts -nonewline [format " DU=%d" [expr $rtc_dr & 0xF]] puts "" puts -nonewline [format "CR\t0x%08x" $rtc_cr] puts -nonewline [format " OSEL=%d" [expr $rtc_cr >> 21 & 3]] puts -nonewline " WUCKSEL=[lindex {RTC/16 RTC/8 RTC/4 RTC/2 ck_spre ck_spre ck_spre+ ck_spre+} [expr $rtc_cr & 7]]" labelled_bits $rtc_cr { {0x800000 COE} {0x100000 POL} {0x80000 COSEL} {0x40000 BKP} {0x20000 SUB1H} {0x10000 ADD1H} {0x8000 TSIE} {0x4000 WUTIE} {0x2000 ALRBIE} {0x1000 ALRAIE} {0x800 TSE} {0x400 WUTE} {0x200 ALRBE} {0x100 ALRAE} {0x80 DCE} {0x40 FMT} {0x20 BYPSHAD} {0x10 REFCKON} {8 TSEDGE} } puts "" puts -nonewline [format "ISR\t0x%08x" $rtc_isr] labelled_bits $rtc_isr { {0x10000 RECALPF} {0x80 INIT} {0x40 INITF} {4 WUTWF} {2 ALRBWF} {1 ALRAWF} } puts "" puts -nonewline [format "PRER\t0x%08x" $rtc_prer] puts -nonewline [format " PREDIV_A=%d" [expr $rtc_prer >> 16 & 0x7F]] puts -nonewline [format " PREDIV_S=%d" [expr $rtc_prer & 0x7FFF]] puts "" puts -nonewline [format "WUTR\t0x%08x" $rtc_wutr] puts -nonewline [format " WUT=%d" [expr $rtc_wutr & 0xFFFF]] puts "" hexline $rtc_calibr "CALIBR" hexline $rtc_alrmar "ALRMAR" hexline $rtc_alrmbr "ALRMBR" hexline $rtc_wpr "WPR" hexline $rtc_ssr "SSR" hexline $rtc_shiftr "SHIFTR" hexline $rtc_tstr "TSTR" hexline $rtc_tsssr "TSSSR" hexline $rtc_calr "CALR" hexline $rtc_tafcr "TAFCR" hexline $rtc_alrmassr "ALRMASSR" hexline $rtc_alrmbssr "ALRMBSSR"