在线时间2 小时
UID189920
ST金币0
蝴蝶豆0
注册时间2010-5-28
新手上路
- 最后登录
- 2018-6-2
|
楼主 |
发表于 2010-6-1 10:53:20
|
显示全部楼层
a0a.1 0b0c
RE:定时器输出比较问题
经我进一步的分析 发现问题的原因是这样的:
当我使用库函数TIM_ClearITPendingBit(TIM4, TIM_IT_CC4)清零第4通道中断标志位时,第三通道的比较中断刚好到达,硬件上会置位第3通道的中断标志位,而这两个通道的中断标志位在同一个寄存器TIM4_SR中,这样造成了紊乱,清标志位的时候会把两个通道的中断标志位都清掉。
TIM_ClearITPendingBit(TIM4, TIM_IT_CC4)函数的具体实现如下:
TIMx->SR &= (u16)~TIM_IT;//这是其中的有效执行语句,TIM_SR是状态寄存器,这条语句执行前,TIMx->SR==0x19;TIM_IT ==0x10;
然而执行完的结果却是 TIMx->SR==0x01,同时清掉了两位
请高手帮忙分析,给出解决办法 跪求!!!!!!!!!!!! |
|