新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > GNU ARM匯編--(八)s3c2440的watchdog

        GNU ARM匯編--(八)s3c2440的watchdog

        作者: 時間:2016-11-26 來源:網絡 收藏
      1. msrcpsr_c,#0xd2@進入中斷模式
      2. ldrsp,=3072@中斷模式的棧指針定義
      3. msrcpsr_c,#0xd3@進入系統模式
      4. ldrsp,=4096@設置系統模式的棧指針
      5. @--------------------------------------------
      6. ldrr0,=GPBUP
      7. ldrr1,=0x03f0
      8. strr1,[r0]
      9. ldrr0,=GPFCON
      10. ldrr1,=0x2ea@0x2
      11. strr1,[r0]
      12. ldrr0,=EXTINT0
      13. @ldrr1,=0x8f888@0x0@0x8f888@~(7|(7<<4)|(7<<8)|(7<<16))//低電平觸發中斷
      14. ldrr1,=0xafaaa@0x0@0x8f888//下降沿觸發中斷
      15. strr1,[r0]
      16. ldrr0,=EINTPEND
      17. ldrr1,=0xf0@0b10000
      18. strr1,[r0]
      19. ldrr0,=EINTMASK
      20. ldrr1,=0x00@0b00000
      21. strr1,[r0]
      22. ldrr0,=SRCPND
      23. ldrr1,=0x3ff@0x1@0b11111
      24. strr1,[r0]
      25. ldrr0,=SUBSRCPND
      26. ldrr1,=0x1<<13
      27. strr1,[r0]
      28. ldrr0,=INTPND
      29. ldrr1,=0x3ff@0x1@0b11111
      30. strr1,[r0]
      31. ldrr0,=INTSUBMSK
      32. ldrr1,=0x0<<13
      33. strr1,[r0]
      34. ldrr0,=INTMSK
      35. ldrr1,=0xfffff000@0b00000
      36. strr1,[r0]
      37. MRSr1,cpsr
      38. BICr1,r1,#0x80
      39. MSRcpsr_c,r1
      40. blmain
      41. irq:
      42. sublr,lr,#4
      43. stmfdsp!,{r0-r12,lr}
      44. blirq_isr
      45. ldmfdsp!,{r0-r12,pc}^
      46. irq_isr:
      47. ldrr2,=GPBDAT
      48. ldrr1,=0x0e0
      49. strr1,[r2]
      50. ldrr0,=EINTPEND
      51. ldrr1,=0xf0
      52. strr1,[r0]
      53. ldrr0,=SRCPND
      54. ldrr1,=0x3ff@0b11111
      55. strr1,[r0]
      56. ldrr0,=SUBSRCPND
      57. ldrr1,=0x1<<13
      58. strr1,[r0]
      59. ldrr0,=INTPND
      60. ldrr1,=0x3ff@0b11111
      61. strr1,[r0]
      62. movpc,lr
      63. delay:
      64. ldrr3,=0xffffff
      65. delay1:
      66. subr3,r3,#1
      67. cmpr3,#0x0
      68. bnedelay1
      69. movpc,lr
      70. clock_setup:
      71. ldrr0,=LOCKTIME
      72. ldrr1,=0xffffffff
      73. strr1,[r0]
      74. ldrr0,=CLKDIVN
      75. ldrr1,=(DIVN_UPLL<<3)|(HDIVN<<1)|(PDIVN<<0)
      76. strr1,[r0]
      77. ldrr0,=UPLLCON
      78. ldrr1,=(U_MDIV<<12)|(U_PDIV<<4)|(U_SDIV<<0)@Fin=12MUPLL=48M
      79. strr1,[r0]
      80. nop
      81. nop
      82. nop
      83. nop
      84. nop
      85. nop
      86. nop
      87. ldrr0,=MPLLCON
      88. ldrr1,=(M_MDIV<<12)|(M_PDIV<<4)|(M_SDIV<<0)@Fin=12MFCLK=400M
      89. strr1,[r0]
      90. movpc,lr
      91. main:
      92. ldrr0,=WTDAT
      93. ldrr1,=Count_reload
      94. strr1,[r0]
      95. ldrr0,=WTCNT
      96. ldrr1,=Count
      97. strr1,[r0]
      98. ldrr0,=WTCON
      99. ldrr1,=(Pre_scaler<<8)|(wd_timer<<5)|(clock_select<<3)|(int_gen<<2)|(reset_enable)
      100. strr1,[r0]
      101. ledloop:
      102. ldrr1,=0x1c0
      103. strr1,[r2]
      104. bldelay
      105. ldrr1,=0x1a0
      106. strr1,[r2]
      107. bldelay
      108. ldrr1,=0x160
      109. strr1,[r2]
      110. bldelay
      111. ldrr1,=0x0e0
      112. strr1,[r2]
      113. bldelay
      114. bledloop
      115. undefined_instruction:
      116. nop
      117. software_interrupt:
      118. nop
      119. prefetch_abort:
      120. nop
      121. data_abort:
      122. nop
      123. not_used:
      124. nop
      125. fiq:
      126. nop

      127. 程序實現的是:一個正常的流水燈,定時器每隔2s觸發一次中斷,中斷處理中點亮第四個LED.

        本文引用地址:http://www.104case.com/article/201611/321723.htm

        稍微該一下上面的代碼:

        .equ int_gen, 0 @關中斷
        .equ reset_enable, 1 @打開重啟信號

        打開重啟信號,則可以看到每隔2s系統就重啟一次.

        如果在循環中加入:

        ldr r0, =WTCNT @喂狗
        ldr r1, =Count
        str r1, [r0]

        那么,這又是一個標準的流水燈了.而且是有watchdog保護的流水燈了.


        上一頁 1 2 下一頁

        關鍵詞: ARM匯編s3c2440watchdo

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乌拉特中旗| 中山市| 河津市| 平凉市| 教育| 板桥市| 宁津县| 广州市| 大埔区| 都昌县| 信宜市| 兴义市| 霍城县| 卢氏县| 云浮市| 阳信县| 通许县| 石首市| 龙山县| 高邮市| 东丰县| 永宁县| 汉源县| 蚌埠市| 德令哈市| 阳朔县| 任丘市| 习水县| 马山县| 彩票| 堆龙德庆县| 石棉县| 任丘市| 鹿邑县| 陇南市| 郎溪县| 遂昌县| 石屏县| 班玛县| 奎屯市| 灵寿县|