[英]STM32F0Discovery TIM1_CC_IRQHandler issue
我目前正在尝试调试我的项目,并且遇到了一个小问题。 我们正在使用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++;
}
}
}
在微控制器中使用printf()对我来说是新的。 我认为您应该得到一个编译或链接器错误。 我看到注释行//initTIM();
因此,我建议您检查计时器初始化方法(NVIC结构设置)。
循环延迟仅一次运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.