5984|3

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于STM32Fxxx的timerCC1中断的问题 [复制链接]



系统clock 24mhz, timer3时基 24mz
timer 设定两个事件:  CC1比较事件 5us ; update 事件 500us

100us 时候会定时的把 timer3的CNT值写成 0x0001  (外部uart事件)
500us 的update事件永远不会发生.
在写CNT 成为 0x0001 之前会打开  CC1中断允许标志位:TIM_IT_CC1.
现象是 CC1 没有延时发生, 而是立即就发生.

在开启CC1中断语句同时, 我clear pending TIM_IT_CC1. 就一切正常了.如下语句
        
TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE);                  
TIM_ClearITPendingBit(TIM3, TIM_IT_CC1 )                 
  TIM3->CNT = 0x0001;

我的问题是, 是为什么操作  TIMx_DIER 中的   CC1IE的同时, 为啥TIMx_SR 中的 CC1IF 会立即变成1.
此帖出自stm32/stm8论坛

最新回复

                                 已经得到ST回复,  原因是因为timer一直是开的, 虽然CC1的中断允许为还没开, 但是CNT到达设定值的时候,pending 位还会出现, 当你想某个周期想enable CC1中断事件. 由于pending已经存在了, 所以就会立即进中断. 所以当每次enable CC1事件之前clear pending  CC1,就OK了  详情 回复 发表于 2011-3-9 11:04
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在简化下问题

在timer 开启的情况下 操作CC1的中断允许位, 为什么CC1的中断标志位会立即发生.
而不是按照设定的值发生.
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 呵呵, 很奇怪的问题. 按照驱动库的例子, 一般都是设定好中断后才开启定时器. 没有试过这种条件.
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 已经得到ST回复,  原因是因为timer一直是开的, 虽然CC1的中断允许为还没开, 但是CNT到达设定值的时候,pending 位还会出现, 当你想某个周期想enable CC1中断事件. 由于pending已经存在了, 所以就会立即进中断. 所以当每次enable CC1事件之前clear pending  CC1,就OK了
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表