有关stm32定时器的问题

[复制链接]
2471|7
 楼主| ai大海ai 发表于 2012-12-1 22:15 | 显示全部楼层 |阅读模式
刚学STM32,正在学中断和定时器中断,在定时器中断中,学着人家写中断子程序:
void TIM2_IRQHandler(void)
{
    .......................//这里写定时器
  .......................//这里写清除标志位
    ......................//这里写要定时的程序,例如led亮灭,但其中有个i=i+1。。。我想知道,即使清除了中断标志位,每当定时器计数溢出,也产生中断?如果是这样的话,应该怎样在一段时间内取消定时器中断?

};
小弟不才,描述不清,若有高手看懂,请与赐教。。。
 楼主| ai大海ai 发表于 2012-12-2 10:00 | 显示全部楼层
没人回答,自己顶上去。。。
song19881218 发表于 2012-12-2 11:36 | 显示全部楼层
清楚中断标志位并不是把中断关了,如果不清,会一直进这个中断程序。清中断标志位和关中断是两码事。
 楼主| ai大海ai 发表于 2012-12-2 17:47 | 显示全部楼层
song19881218 发表于 2012-12-2 11:36
清楚中断标志位并不是把中断关了,如果不清,会一直进这个中断程序。清中断标志位和关中断是两码事。 ...

哦,明白,那怎样关中断呢?
杨爱林林 发表于 2012-12-4 09:01 | 显示全部楼层
打开core_cm3.h
找到NVIC_DisableIRQ和NVIC_EnableIRQ
禁能和使能
uet_cache 发表于 2012-12-4 10:32 | 显示全部楼层
定时器初始中,应该有使能定时中断的操作,ITCONFIG那个,,把中断使能位关掉,相应的中断就不会进去了!这些例子多的很,你随便找官方一个TIM的例程,参考一下它的中断函数或定时器初始化函数就知道了!
21leio 发表于 2012-12-4 12:46 | 显示全部楼层
在STM32 v3.5固件库中,使能和失能硬件中断函数是XXX_ITConfig(XXX_TypeDef* XXXx, uint16_t  XXX_IT, FunctionalState NewState);

比如
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);   //使能USART1的发送完成中断;
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);   //失能USART1的发送完成中断;

if ( USART_GetITStatus(USART1,USART_IT_TXE) != RESET ) //查询USART1的发送完成中断标志是否置位?

USART_ClearITPendingBit(USART1,USAR_IT_TXE);   //清除USART1的发送完成标志位,避免重复进入USART1_IRQHandler(void)中断处理函数。


abin0415 发表于 2012-12-4 15:44 | 显示全部楼层
STM32里面有中断使能位,你把相应的中断使能位清0即可取消定时器中断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部