OpenEdv-开源电子网

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

TIM5中断进不去是为什么

[复制链接]

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
发表于 2017-9-12 09:31:44 | 显示全部楼层 |阅读模式
1金钱
double time = 0;

/*
利用tim5测量按键按下的时间
由于TIM5_CH1跟按键一是一起的
TIM5_CH1是PA0
按键1是高电平有效
*/

/*
函数功能:初始化tim5并测量按键1按下的时间长度
*/
void tim5_init(void)
{
        RCC->AHB1ENR |= 1 << 0;     //使能GPIOA时钟
        GPIOA->MODER &= ~(0x3 << 0);  //清零
        GPIOA->MODER |= (0x2 << 0); //开启复用功能
        GPIOA->AFR[0] |= (0x2 << 0);  //复用成TIM5_CH1功能
        RCC->APB1ENR |= 1 << 5;  //使能TIM5时钟
       
        //**************************配置TIM5************************/
        TIM5->PSC = 84 - 1;  //设置分频值
        TIM5->ARR = 10000 - 1;  //设置重载值
        TIM5->CR1 = 0;  //配置CR1相关数据
       
        TIM5->CCMR1 &= ~(0XF << 4);  //  无滤波
        TIM5->CCER &= ~(0x1 << 1);
        TIM5->CCER &= ~(0X1 << 3);  //边沿检测设置为高电平有效,与按键对应
        TIM5->CCMR1 |= (0X1 << 0);   //CC1通道为输入,映射到TI1上
        TIM5->CCMR1 &= ~(0X3 <<2); //捕获分频器设置为不分频
        TIM5->CCER |= 1 << 0;     //使能捕获
        //设置中断
        TIM5->DIER |= 1 << 1;  //使能CC1中断
        NVIC_EnableIRQ(TIM5_IRQn);
        TIM5->CR1 |= 1 << 0;    //开启计数器计数
}

/*
错误:没有进入中断
*/

void TIM5_IRQHandler(void)
{       
        if(TIM5->SR & 1 << 1) //判断捕获中断标志
        {
                time = TIM5->CCR1;
                printf("%lf\r\n",time);
                TIM5->SR = 0;  //清除中断标志位
        }
}


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

52

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2017-8-19
在线时间
160 小时
 楼主| 发表于 2017-9-12 09:31:45 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-18 13:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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