Steward
分享是一種喜悅、更是一種幸福
微處理器 - MediaTek MT7688 (LinkIt Smart 7688) - Assembly - Timer0(Polling)
PERI_CLK_SEL用來設定需要使用的Clock Source
P.S. 如果要使用Timer,BBPPLL必須要Enable
T0INT用來判斷Timer0是否已經發生中斷
T0PRES用來設定預除數值,T0EN用來啟動Timer0下數功能,T0AL用來設定是否自動從T0LMT_REG載入數值
自動載入的數值
Timer0下數數值設定
main.s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | . extern _start .set noreorder . equiv CLKCFG0 , 0xb000002c . equiv TGLB_REG , 0xb0000100 . equiv T0CTL_REG , 0xb0000110 . equiv T0LMT_REG , 0xb0000114 . equiv GPIO_CTRL_1 , 0xb0000604 . equiv GPIO_DATA_1 , 0xb0000624 . equiv LED , (44 - 32) .text _start : b reset . org 0x400 reset : li $8, GPIO_CTRL_1 li $9, (1 << LED ) sw $9, 0($8) li $8, CLKCFG0 lw $9, 0($8) or $9, (1 << 4) | (1 << 3) | (1 << 2) sw $9, 0($8) li $8, T0LMT_REG li $9, 1000 sw $9, 0($8) li $8, T0CTL_REG li $9, (1000 << 16) | (1 << 7) | (1 << 4) sw $9, 0($8) loop : li $8, TGLB_REG lw $9, 0($8) and $9, 1 beqz $9, loop nop li $8, GPIO_DATA_1 xor $10, (1 << LED ) sw $10, 0($8) li $8, TGLB_REG li $9, 1 sw $9, 0($8) b loop nop |
P.S. T0PRES = 1000,代表每筆下數的時間為1ms,T0LMT_REG = 1000,代表每秒產生一次中斷,需要注意的是,不管Timer0使用XTAL或者BBPPLL當作Clock Source,BBPPLL都必須要Enable
完成