Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 2.78 KB | None | 0 0
  1.     .text
  2.     .data
  3.     .include "bh_tm4c123gh6pm.h"
  4.     .thumb
  5.     .global main
  6.  
  7. main:
  8.     bl GPIO_Init
  9.     ldr R0, GPIO_PORTF_DATA_R
  10.     ldr R1, GPIO_PORTE_DATA_R
  11.  
  12. flash:
  13.     mov R5, #0
  14.     mov R8, #0x200000
  15.     mov R2, #0x3E
  16.     str R2, [R0]
  17.     str R2, [R1]
  18.     bl delay
  19.  
  20.     mov R5, #0
  21.     mov R8, #0x200000
  22.     mov R3, #0x00
  23.     str R3, [R1]
  24.     str R3, [R0]
  25.     bl delay
  26.  
  27.     B flash
  28.  
  29. delay:
  30.     add R5, R5, #1
  31.     cmp R5, R8
  32.     bne delay
  33.     bx lr
  34.  
  35. loop:
  36.     nop
  37.     B loop
  38. .end
  39.  
  40. GPIO_Init:
  41.         ; 1) activate clock
  42.         ldr R1, SYSCTL_RCGCGPIO_R
  43.         ldr R0, [R1]
  44.         ldr R2, SYSCTL_RCGC2_GPIOF
  45.         orr R0, R0, R2 ; clock
  46.         str R0, [R1]
  47.         ldr R2, SYSCTL_RCGC2_GPIOE
  48.         orr R0, R0, R2 ; clock
  49.         str R0, [R1]
  50.         nop  ; allow time extra time
  51.         nop
  52.         ; 2) unlock
  53.         ldr R0, GPIO_LOCK_KEY
  54.         ldr R1, GPIO_PORTF_LOCK_R
  55.         str R0, [R1]
  56.         ldr R0, GPIO_PORTF_CR_R
  57.         mov R1, #0x1F
  58.         str R1, [R0]
  59.         ldr R0, GPIO_LOCK_LOCKED
  60.         ldr R1, GPIO_PORTF_LOCK_R
  61.         str R0, [R1]
  62.         ; 3) disable analog functionality
  63.         ldr R1, GPIO_PORTF_AMSEL_R
  64.         ldr R0, [R1]
  65.         bic R0, R0, #0x1F
  66.         str R0, [R1]
  67.         ldr R1, GPIO_PORTE_AMSEL_R
  68.         ldr R0, [R1]
  69.         bic R0, R0, #0x3E
  70.         str R0, [R1]
  71.         ; 4) configure as GPIO
  72.         ldr R1, GPIO_PORTF_PCTL_R
  73.         ldr R0, [R1]
  74.         mov R3, #0x000F
  75.         lsl R2, R3, #0x10
  76.         mov R3, #0xFFFF
  77.         add R2, R2, R3
  78.         bic R0, R0, R2
  79.         str R0, [R1]
  80.         ldr R1, GPIO_PORTE_PCTL_R
  81.         ldr R0, [R1]
  82.         mov R3, #0x000E
  83.         lsl R2, R3, #0x30
  84.         mov R3, #0xFFFF
  85.         add R2, R2, R3
  86.         bic R0, R0, R2
  87.         str R0, [R1]
  88.         ; 5) set direction register
  89.         ldr R1, GPIO_PORTF_DIR_R
  90.         ldr R0, [R1]
  91.         orr R0, R0, #0x0E
  92.         str R0, [R1]
  93.         ldr R1, GPIO_PORTE_DIR_R
  94.         ldr R0, [R1]
  95.         orr R0, R0, #0x3E
  96.         str R0, [R1]
  97.         ; 6) port function
  98.         ldr R1, GPIO_PORTF_AFSEL_R
  99.         ldr R0, [R1]
  100.         bic R0, R0, #0x1F
  101.         str R0, [R1]
  102.         ldr R1, GPIO_PORTE_AFSEL_R
  103.         ldr R0, [R1]
  104.         bic R0, R0, #0x3E
  105.         str R0, [R1]
  106.         ; pull-up resistors
  107.         ldr R1, GPIO_PORTF_PUR_R
  108.         ldr R0, [R1]
  109.         orr R0, R0, #0x11
  110.         str R0, [R1]
  111.         ; enable 8mA drive
  112.         ldr R1, GPIO_PORTF_DR8R_R
  113.         ldr R0, [R1]
  114.         orr R0, R0, #0x1F
  115.         str R0, [R1]
  116.         ; 7) enable digital port
  117.         ldr R1, GPIO_PORTF_DEN_R
  118.         ldr R0, [R1]
  119.         orr R0, R0, #0x1F
  120.         str R0, [R1]
  121.         ldr R1, GPIO_PORTE_DEN_R
  122.         ldr R0, [R1]
  123.         orr R0, R0, #0x3E
  124.         str R0, [R1]
  125.         bx  LR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement