为什么定时器7初始化后立刻进入中断?

2019-07-21 00:26发布

本帖最后由 1860xq 于 2016-1-4 19:59 编辑

为什么定时器7初始化后立刻进入中断?而不是等到定时时间到了再进入中断?[mw_shl_code=applescript,true]/*定时器7初始化*/
//arr: 自动重载值,4000-1
//psc: 预分频器值,42000-1
void TIM7_Initial(u16 arr,u16 psc)
{
        /*TIM7初始化*/
        RCC->APB1ENR|=1<<5; //使能TIM7时钟
        TIM7->ARR=arr; //自动重载值
        TIM7->PSC=psc; //预分频器值
        TIM7->DIER|=1<<0;   //允许更新中断
        TIM7->CR1|=1<<0; //使能TIM7

        NVIC_Initial(1,3,TIM7_IRQn,2);
}

/*定时器7中断函数*/
void TIM7_IRQHandler()
{
        if(TIM7->SR&(1<<0)) //更新中断挂起
                        TIM7->CR1&=~(1<<0); //关闭TIM7
        TIM7->SR&=~(1<<0);//更新中断标志清0
}
[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 05:35
 精彩回答 2  元偷偷看……
openedvadmin
2楼-- · 2019-07-21 05:39
你定时参数是怎么设置的?
你怎么确定是立马?
烟酒不沾
3楼-- · 2019-07-21 08:11
 精彩回答 2  元偷偷看……
1860xq
4楼-- · 2019-07-21 09:43
本帖最后由 1860xq 于 2016-1-5 08:15 编辑
openedvadmin 发表于 2016-1-4 21:23
你定时参数是怎么设置的?
你怎么确定是立马?

我在初始化里将LED点亮,定时1秒,中断函数里将LED熄灭,结果系统复位后,LED立刻熄灭(LED点亮时间太短,直接进入中断将其熄灭);

我在初始化里将LED熄灭,定时1秒,中断函数里将LED点亮,结果系统复位后,LED立刻点亮(LED熄灭时间太短,直接进入中断将其点亮)。

只能通过软件方式避免了。

vwv
5楼-- · 2019-07-21 10:08
 精彩回答 2  元偷偷看……

一周热门 更多>