OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7550|回复: 5

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

[复制链接]

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-7-6
在线时间
5 小时
发表于 2016-1-4 19:57:17 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 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]

最佳答案

查看完整内容[请看2#楼]

所有定时器都是这样. 暂时没有找到解决办法 论坛有网友提过解决办法,你可以试试,我没有验证过.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-1-4 19:57:18 | 显示全部楼层
所有定时器都是这样.
暂时没有找到解决办法
论坛有网友提过解决办法,你可以试试,我没有验证过.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

306

主题

1426

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
7871
金钱
7871
注册时间
2015-10-15
在线时间
2874 小时
发表于 2016-1-4 21:23:24 | 显示全部楼层
你定时参数是怎么设置的?
你怎么确定是立马?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2016-1-5 07:29:20 | 显示全部楼层
正点原子 发表于 2016-1-4 23:07
所有定时器都是这样.
暂时没有找到解决办法
论坛有网友提过解决办法,你可以试试,我没有验证过.

这个问题真是纠结啊,这个问题难道ST不知道吗?为什么不改进呢?有难度还是有意这样的,有什么作用呢,不过给我们使用带来的不必要的麻烦,晕也!
回复

使用道具 举报

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-7-6
在线时间
5 小时
 楼主| 发表于 2016-1-5 07:51:46 | 显示全部楼层
本帖最后由 1860xq 于 2016-1-5 08:15 编辑
openedvadmin 发表于 2016-1-4 21:23
你定时参数是怎么设置的?
你怎么确定是立马?

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

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

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

回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2015-12-31
在线时间
15 小时
发表于 2016-1-5 08:51:16 | 显示全部楼层
本帖最后由 vwv 于 2016-1-5 08:54 编辑

这是一个BUG,标记一下。
中断里面处理,第一次打酱油,以后的正常处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 21:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表