我目前正在尝试调试我的项目,并且遇到了一个小问题。 我们正在使用Ride7运行调试器,并在SWD引脚上将RLink连接到我们的板上。 当我们运行代码时,我们只能停留在一点,而设备只能停留在一点。 我们将其暂停,发现程序计数器指向TIM1_CC_IRQHandler。 我们将其解释为timer1的捕获比较的标志。 但是,我们甚至没有使用捕获比较模式。 我们甚至从未初始化计时器1。微控制器试图做什么?如何克服它?

我们尝试逐步执行该程序,但无法跟上PC进入停滞状态。 我们已经运行了它,它通过了我们的主while循环,但是在第二遍时,它丢失了。 然后,我们将其重置,发现PC指向RESET_HANDLER。 这发生在printf()调用中; 我不知道它要做什么。

代码是否有帮助:

#include <stdio.h>
#include "device_initialization.h"



void main(void)
{
    uint32_t time = 0;
    //initTIM();
    //initADC();
    USART_Config();
    initGPIO();

    while(1)
    {
        time++;
        printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");

        /* Loop until the end of transmission */
        /* The software must wait until TC=1. The TC flag remains cleared during all data
        transfers and it is set by hardware at the last frame’s end of transmission*/
        while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
        {
        }
        while(time<1000000)
            {
            time++;  
            }
    }

}

===============>>#1 票数:0

在微控制器中使用printf()对我来说是新的。 我认为您应该得到一个编译或链接器错误。 我看到注释行//initTIM(); 因此,我建议您检查计时器初始化方法(NVIC结构设置)。

循环延迟仅一次运行。

  ask by Drebin512 translate from so

未解决问题?本站智能推荐: