关于清楚定时器更新中断标志位的一个问题

2019-08-16 22:08发布

本帖最后由 ARF1939261764 于 2017-7-19 18:38 编辑

QQ截图20170719182843.png

为什么我清除标志位的语句放在位置一可以运行,而在位置二就不可以了,定时周期为1s,

QQ截图20170719183049.png
这是定时器初始化代码



附全部代码:
[mw_shl_code=c,true]#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
void LED_GPIO_Init(void)
{
        RCC->APB2ENR|=1<<6;
        GPIOE->CRL&=0xFF0FFFFF;
        GPIOE->CRL|=0x00300000;//&Iacute;¨&Oacute;&Atilde;&Iacute;&AElig;&Iacute;ì&Ecirc;&auml;&sup3;&ouml;
        GPIOE->ODR|=1<<5;
        
        RCC->APB2ENR|=1<<3;
        GPIOB->CRL&=0xFF0FFFFF;
        GPIOB->CRL|=0x00300000;//&Iacute;¨&Oacute;&Atilde;&Iacute;&AElig;&Iacute;ì&Ecirc;&auml;&sup3;&ouml;
        GPIOB->ODR|=1<<3;
}

void Timer_Init(void)
{
        NVIC_InitTypeDef NVIC_InitStruct;
        RCC->APB1ENR|=0x01;
        
        TIM2->CR1|=1<<7;//TIMx_ARR&frac14;&Auml;&acute;&aelig;&AElig;÷±&raquo;×°&Egrave;&euml;&raquo;&ordm;&sup3;&aring;&AElig;÷
        TIM2->CR1&=~(u32)(0x03<<5);//±&szlig;&Ntilde;&Oslash;&para;&Ocirc;&AElig;&auml;&Auml;&pound;&Ecirc;&frac12;
        TIM2->CR1&=~(u32)(1<<4);//&Iuml;ò&Eacute;&Iuml;&frac14;&AElig;&Ecirc;&yacute;
        TIM2->CR1&=~(u32)(1<<3);//&Aacute;&not;&ETH;&oslash;&frac14;&frac14;&Ecirc;&yacute;
        TIM2->CR1&=~(u32)(1<<2);
        TIM2->CR1&=~(u32)(1<<1);
        
        TIM2->DIER|=1<<0;
        
        TIM2->PSC=7200;
        TIM2->ARR=10000;
        
        NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStruct);
        
        TIM2->CR1|=1<<0;
}

int main(void)
{
        delay_init();
        LED_GPIO_Init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Timer_Init();
        while(1)
        {
                GPIOB->ODR|=1<<5;
                delay_ms(500);
                GPIOB->ODR&=~(1<<5);
                delay_ms(500);
        }
}
void TIM2_IRQHandler(void)
{
        TIM2->SR&=0xFFFE;//位置一
        PEout(5)=~PEin(5);
        //TIM2->SR&=0xFFFE;//位置二   
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。