[STM32F1] STM32F103C8 定时器中断 误触发 输入捕获

[复制链接]
2453|10
 楼主| ddb_21ic 发表于 2020-12-25 14:35 | 显示全部楼层 |阅读模式
 楼主| ddb_21ic 发表于 2020-12-25 14:37 | 显示全部楼层
为什么明明没有中断标记,却进入中断函数了?用过输入捕获的老师们,遇到过吗?
香水城 发表于 2020-12-26 23:28 | 显示全部楼层
你的截图基本看不到什么实在内容

进了什么中断你查下DIER寄存器的相关使能位,然后检查下自己的代码。
 楼主| ddb_21ic 发表于 2021-1-1 21:38 | 显示全部楼层
本帖最后由 ddb_21ic 于 2021-1-1 21:49 编辑
香水城 发表于 2020-12-26 23:28
你的截图基本看不到什么实在内容

进了什么中断你查下DIER寄存器的相关使能位,然后检查下自己的代码。

版主,Watch窗口中,共记录了4次SR寄存器的值,全是0,说明没有中断事件。
但是:寄存器窗口中,SR寄存器的值是0x0000 0809,与记录的tmp_SR不一致,这可能是什么原因?

DIER值为0x0000 0009, 使能了两个中断源,update和捕获事件CC3。

void TIM3_IRQHandler(void)
{
    irq_event_cnt = 0;
    tmp_SR1 = TIM3->SR;         // 我认为:不看其他内容,这里读取SR寄存器,就不应该是0,是0就不应该有中断产生
    if(LL_TIM_IsActiveFlag_UPDATE(TIM3))
    {
        t3_update_cnt++;
        LL_TIM_ClearFlag_UPDATE(TIM3);
        LL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);        
        ++irq_event_cnt;
        return;
    }   

....

香水城 发表于 2021-1-2 22:54 | 显示全部楼层
ddb_21ic 发表于 2021-1-1 21:38
版主,Watch窗口中,共记录了4次SR寄存器的值,全是0,说明没有中断事件。
但是:寄存器窗口中,SR寄存器 ...

既然正常进了ISR 就说明发生了相应中断。

我看你截图中的寄存器查看窗口 DIER和SR寄存器都是0x09,说明发生了相应更新中断和比较中断。

至于你的疑问,建议好好确认下你的处理代码。
 楼主| ddb_21ic 发表于 2021-1-3 17:43 | 显示全部楼层
香水城 发表于 2021-1-2 22:54
既然正常进了ISR 就说明发生了相应中断。

我看你截图中的寄存器查看窗口 DIER和SR寄存器都是0x09,说明 ...

那进入中断后,读取 tmp_SR1 = TIM3->SR,此变量就是用来调试用的,其他地方没有任何位置使用了此变量。
读取结果为0,我认为只有两种可能:1、中断误触发;2、SR寄存器读取不成功。
调试窗口中,SR寄存器0x09,也是让我感到不解,SR寄存器有影子寄存器吗?触发中断后,SR寄存器会延后置位?
keaibukelian 发表于 2021-1-11 12:13 | 显示全部楼层
看截图看不出来什么内容
labasi 发表于 2021-1-11 12:15 | 显示全部楼层
进入中断了 估计代码有问题
paotangsan 发表于 2021-1-11 12:16 | 显示全部楼层
可能是进入中断的方式有问题吧
renzheshengui 发表于 2021-1-11 12:17 | 显示全部楼层
很有可能中断函数里边的代码有问题
wakayi 发表于 2021-1-11 12:18 | 显示全部楼层
单步运行看看情况吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

1124

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部