【问题标题】:FRDM-KL25z assembly delay loop causes resetFRDM-KL25z 组装延迟循环导致复位
【发布时间】:2023-04-06 00:40:01
【问题描述】:

我目前正在使用 FRDM-KL25Z 开发板和使用 Keil MDK-lite (5.14a) 进行编程的项目。我们应该做的是使用三个相应的 LED 和一个按钮创建一个简单的交通灯,以加快灯的变化(不像真正的交通灯那样立即进行,而是在每次延迟后检查)。我遇到的问题是我的程序在模拟器中运行良好,但是在开发板上运行时它几乎立即自行重置。我已将其缩小到我正在使用的循环延迟 30 秒。 任何可以了解为什么会发生这种情况或如何在调试器中找到更多信息的提示都会很棒。

这是我正在使用的循环的一个剪辑。

reset   LDR R1, =0x00000002     ;Change light to red
        BL changelight          ;

        LDR R3, =0x00000011     ;Put value into counter (1 loop just to show code works)
 d30_1  BL buttonpress          ;Check for button press
        SUBS R3, #17            ;Subtract # of ticks in loop (17) from counter
        CMP R3, #0
        BGT d30_1

        CMP R6, #1              ;Check for button press
        BEQ reset               ;Reset to red if pressed
        LDR R1, =0x00000010     ;Change light to green
        BL changelight          ;

        LDR R3, =0x05B8d800     ;Put value into counter (5 seconds, the board resets when counter is this high)
d30_2   BL buttonpress          ;Check for button press
        SUBS R3, #17            ;Subtract # of ticks in loop (17) from counter
        CMP R3, #0
        BGT d30_2
        ... 

这是分支按钮

buttonpress 
        LDR R0, =0x400FF090     ;Put address of PORTC_PDIR into R0
        LDR R1, [R0]            ;Put value of PORTC_PDIR into R1
        LDR R0, =0x00000080     ;Put value of monitored input pin
        TST R1, R0              ;Check for button press
        BNE nopress             ;Break from process if button not pressed
        MOVS R6, #1             ;Put 1 in R6 if button has been pressed
nopress BX LR

【问题讨论】:

  • 我尝试将我的计数器除以 17 并在每次迭代中减去 1,但硬件似乎仍会重置。我的计数器从 D76AB5 开始,重置后在 C64908。
  • 您有没有重置失败的看门狗计时器?

标签: assembly crash arm keil cortex-m


【解决方案1】:

我在调试时检查了复位控制模块 (RCM)。复位的原因可归因于看门狗定时器计算机正常运行 (COP) 超时。我在初始化中添加了以下内容以解决问题。谢谢 Notlikethat。

;Disable watchdog COP timer
LDR R0, =SIM_COPC   ;Load address of SIM_COPC to R0
LDR R1, =0x0        ;Disable watchdog COPT
STR R1, [R0]        ;

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多