# {For Open On-Chip Debugger 0.6.0-dev-00477-gf1c0133 } # { Display the stm32f4xx registers associated with USART } # { http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/DM00031020.pdf } source [find bitsbytes.tcl] source [find memory.tcl] puts "\n==== USART ====" set usart_base(1) 0x40011000 set usart_base(2) 0x40004400 set usart_base(3) 0x40004800 set usart_base(4) 0x40004C00 set usart_base(5) 0x40005000 set usart_base(6) 0x40011400 set usart $usart_base(2) foreach nameaddr { {usart_sr 0} {usart_brr 8} {usart_cr1 12} {usart_cr2 0x10} {usart_cr3 0x14} {usart_gtpr 0x18} } { set [lindex $nameaddr 0] [memread32 [expr $usart + [lindex $nameaddr 1]]] } proc labelled_bits {var masklabels} { foreach ml $masklabels { if {$var & [lindex $ml 0]} { puts -nonewline " [lindex $ml 1]" } } } puts -nonewline [format "SR\t0x%08x" $usart_sr] labelled_bits $usart_sr {{0x80 TXE} {0x40 TC} {0x20 RXNE} {8 ORE} {4 NF} {2 FE} {1 PE}} puts "" puts [format "BRR\t0x%08x %d:%d" $usart_brr [expr $usart_brr >> 4] [expr $usart_brr & 0xF]] puts -nonewline [format "CR1\t0x%08x" $usart_cr1] labelled_bits $usart_cr1 {{0x8000 OVER8} {0x2000 LIE} {0x1000 M} {0x800 WAKE} {0x400 PCE} {0x200 PS} {0x100 PEIE} {0x80 TXEIE} {0x40 TCIE} {0x20 RXNEIE} {0x10 IDLEIE} {8 TE} {4 RE} {2 RWU} {1 SBK}} puts "" puts -nonewline [format "CR2\t0x%08x" $usart_cr2] labelled_bits $usart_cr2 {{0x4000 LINEN} {0x2000 STOP1} {0x1000 STOP0} {0x800 CLKEN} {0x400 CPOL} {0x200 CPHA} {0x100 LBCL} {0x40 LBDE} {0x20 LBDL}} puts "" puts -nonewline [format "CR3\t0x%08x" $usart_cr3] labelled_bits $usart_cr3 {{0x800 ONEBIT} {0x400 CTSIE} {0x200 CTSE} {0x100 RTSE} {0x80 DMAT} {0x40 DMAR} {0x20 SCEN} {0x10 NACK} {8 HDSEL} {4 IRLP} {2 IREN} {1 EIE}} puts ""