分类:
2009-03-09 14:08:39
disable_lcd_backlight
ldr r0, =0x840 /*GPIO的function寄存器,后三位是function*/
ldr r1, =MFP_LCD_PWM
str r0, [r1]
ldr r4, =0x40e00000
mov r5, #(1<<(LCD_PWM_GPIO%32)) /* 算出GPIO所在寄存器的位 */
ldr r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))] /* r4 + 0x0c 是GPDR的寄存器base , GPDR是设置GPIO方向的寄存器*/
orr r0, r0, r5 /*ORR是逻辑或*/
str r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))] /* 设置GPIO为output*/
bic r0, r0, r5 /*BIC是位清零*/
str r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))] /* 设置GPIO为inputput*/
mov r5, #(1<<(LCD_PWM_GPIO%32)) /* corresponding gpio bit */
str r5, [r4, #(0x24 + 4*(LCD_PWM_GPIO/32))] /* GPCR:设置GPIO为低 , GPCR是设置GPIO为低的寄存器, 0x24是GPCR寄存器的base*/
str r5, [r4, #(0x18 + 4*(LCD_PWM_GPIO/32))] /* GPSR: 设置GPIO为高,GPSR是设置GPIO为高的寄存器, 0x18是GPCR寄存器的base*/
ldr r0, =0x840 将0x840导入到寄存器r0中
str r0, [r1] *r1 = r0
orr r0, r0, r5 r0 = r0 | r5
ldr r0, [r4, #(0x0c + 4*(LCD_PWM_GPIO/32))] (r4, #(0x0c + 4*(LCD_PWM_GPIO/32)))算出的是寄存器地址,将r0寄存器的值存入到算出地址中。 r0 = *(r4 + #(0x0c + 4*(LCD_PWM_GPIO/32)))