OpenEdv-开源电子网

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

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

[复制链接]

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-3-7
在线时间
63 小时
发表于 2017-7-19 18:38:17 | 显示全部楼层 |阅读模式
本帖最后由 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]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2017-3-7
在线时间
63 小时
 楼主| 发表于 2017-7-19 18:40:42 | 显示全部楼层
但库函数清除标志位的语句可以放在第二个位置
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-3 03:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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