⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usarts.tcl

📁 一个烧写FLASH的软件
💻 TCL
字号:
# the DBGU and USARTs are 'almost' indentical'set DBGU_CR         [expr $AT91C_BASE_DBGU + 0x00000000]set DBGU_MR         [expr $AT91C_BASE_DBGU + 0x00000004]set DBGU_IER        [expr $AT91C_BASE_DBGU + 0x00000008]set DBGU_IDR        [expr $AT91C_BASE_DBGU + 0x0000000C]set DBGU_IMR        [expr $AT91C_BASE_DBGU + 0x00000010]set DBGU_CSR        [expr $AT91C_BASE_DBGU + 0x00000014]set DBGU_RHR        [expr $AT91C_BASE_DBGU + 0x00000018]set DBGU_THR        [expr $AT91C_BASE_DBGU + 0x0000001C]set DBGU_BRGR       [expr $AT91C_BASE_DBGU + 0x00000020]# no RTOR# no TTGR# no FIDI# no NERset DBGU_CIDR       [expr $AT91C_BASE_DBGU + 0x00000040]set DBGU_EXID       [expr $AT91C_BASE_DBGU + 0x00000044]set DBGU_FNTR       [expr $AT91C_BASE_DBGU + 0x00000048]set USx_CR           0x00000000set USx_MR           0x00000004set USx_IER          0x00000008set USx_IDR          0x0000000Cset USx_IMR          0x00000010set USx_CSR          0x00000014set USx_RHR          0x00000018set USx_THR          0x0000001Cset USx_BRGR         0x00000020set USx_RTOR         0x00000024set USx_TTGR         0x00000028set USx_FIDI         0x00000040set USx_NER          0x00000044set USx_IF           0x0000004C# Create all the uarts that exist..# we blow up if there are >9proc show_mmr_USx_MR_helper { NAME ADDR VAL } {    # First - just print it    set x [show_normalize_bitfield $VAL 3 0]    if { $x == 0 } {	puts "\tNormal operation"    } else {	puts [format "\tNon Normal operation mode: 0x%02x" $x]    }    set x [show_normalize_bitfield $VAL 11 9]    set s "unknown"    switch -exact $x { 	0 { set s "Even" }	1 { set s "Odd" }	2 { set s "Force=0" }	3 { set s "Force=1" }	* {	    set $x [expr $x & 6]	    switch -exact $x {		4 { set s "None" }		6 { set s "Multidrop Mode" }	    }	}    }    puts [format "\tParity: %s " $s]        set x [expr 5 + [show_normalize_bitfield $VAL 7 6]]    puts [format "\tDatabits: %d" $x]    set x [show_normalize_bitfield $VAL 13 12]    switch -exact $x {	0 { puts "\tStop bits: 1" }	1 { puts "\tStop bits: 1.5" }	2 { puts "\tStop bits: 2" }	3 { puts "\tStop bits: Illegal/Reserved" }    }}# For every possbile usart...foreach WHO { US0 US1 US2 US3 US4 US5 US6 US7 US8 US9 } {    set n AT91C_BASE_[set WHO]    set str ""    # Only if it exists on the chip     if [ info exists $n ] {	# Hence: $n - is like AT91C_BASE_USx	# For every sub-register	foreach REG {CR MR IER IDR IMR CSR RHR THR BRGR RTOR TTGR FIDI NER IF}	{	    # vn = variable name	    set vn [set WHO]_[set REG]	    # vn = USx_IER	    # vv = variable value	    set vv [expr $$n + [set USx_[set REG]]]	    # And VV is the address in memory of that register	    # make that VN a GLOBAL so others can find it	    global $vn	    set $vn $vv	    # Create a command for this specific register.	    proc show_$vn { } "show_mmr32_reg $vn"	    # Add this command to the Device(as a whole) command	    set str "$str\nshow_$vn"	}	# Now - create the DEVICE(as a whole) command	set fn show_$WHO	proc $fn { } $str    }}# The Debug Uart is special..set str ""# For every sub-registerforeach REG {DBGU_CR DBGU_MR DBGU_IER DBGU_IDR DBGU_IMR     DBGU_CSR DBGU_RHR DBGU_THR DBGU_BRGR DBGU_CIDR DBGU_EXID DBGU_FNTR} {    # Create a command for this specific register.    proc show_$REG { } "show_mmr32_reg $REG"        # Add this command to the Device(as a whole) command    set str "$str\nshow_$REG"}# Now - create the DEVICE(as a whole) commandproc show_DBGU { } $strunset strproc show_DBGU_MR_helper { NAME ADDR VAL } { show_mmr_USx_MR_helper $NAME $ADDR $VAL }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -