WCH沁恒单片机
直播中

张华

8年用户 1487经验值
私信 关注
[问答]

CH579清除TMR2中断标志位失效是为什么?怎么处理?

条件:在使用CH579 的BLE Peripheral例程时,增加了TMR2作1s周期定时器,并触发周期结束中断。
现象:进入TMR2中断后,无论是直接调用函数还是直接写寄存器,TMR2中断标志位都无法清除,就导致不断进入TMR2中断
变更:即使不初始化BLE,也不行
请各位大佬帮忙看一下要怎么解决这个问题,谢谢!!!

TMR2初始化代码如下

    void TMR2_timer1s(void)
    {
    TMR2_TimerInit(1000000/32);/* 1s定时*/
   
    /* 使能计数溢出中断 */
    TMR2_ClearITFlag( TMR0_3_IT_CYC_END );
    TMR2_ITCfg(ENABLE, TMR0_3_IT_CYC_END);
    NVIC_EnableIRQ(TMR2_IRQn);
    }


寄存器如下:


  
  

回帖(2)

张文琳

2022-9-5 09:10:44
纯TMR例子,参考CH579EVT的TMR例子。
具体路径如下:./EVT/EXAM/TMR/
举报

刘娟

2022-9-5 09:10:55
TMR2_TimerInit(1000000/32);
在官方sdk的默认 工程里, CH579 ble的默认主频是跑在32Mhz, TMR2_TimerInit 实际上是是对计数器的 结束值进行赋值,,你赋值是
1000000/32 = 31250 ,
32e6/31250 = 1024hz,你定时是1/1024Hz = 0.0009765625s


你确定是不能清除中断,还是中断太频繁了
这样才是1s 的定时:
TMR2_TimerInit(32e6);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分