OpenEdv-开源电子网

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

定时器捕获实验

[复制链接]

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2018-4-18
在线时间
18 小时
发表于 2018-7-27 09:25:09 | 显示全部楼层 |阅读模式
1金钱
下面为定时器捕获实验;实验主要内容为每秒钟捕获采集发动机转速,转速信号为高电平数字信号,程序内容为寄存器版本void Timer3_Config(u16 arr,u16 psc)
{
       
        RCC->APB1ENR|=1<<1;        //TIM3时钟使能
        RCC->AHB1ENR|=1<<2; //PORTC时钟使能
        GPIO_Set(GPIOC,PIN8,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//复用上拉
        GPIO_AF_Set(GPIOC,8,2);        //PC8,AF2

        TIM3->ARR=arr;                 
        TIM3->PSC=psc;                   
}

void  Timer3_ENInt(void)
{
        TIM3->CCMR2|=1<<0;                //CC3S=01         &#209;&#161;&#212;&#241;ê&#228;è&#235;&#182;&#203; IC1ó3é&#228;μ&#189;TI1é&#207;
        TIM3->CCMR2|=0<<4;                 //IC3F=0000 &#197;&#228;&#214;&#195;ê&#228;è&#235;&#194;&#203;2¨&#198;÷ 2&#187;&#194;&#203;2¨
        TIM3->CCMR2|=0<<2;         //IC3PS=00         &#197;&#228;&#214;&#195;ê&#228;è&#235;·&#214;&#198;μ,2&#187;·&#214;&#198;μ
       
        TIM3->CCER|=0<<9;                        //CC3P=01
        TIM3->CCER|=1<<8;                 //CC3E=1        
       
        TIM3->EGR=1<<0;                       
        TIM3->DIER|=1<<3;              //允许捕获中断       

       
        TIM3->DIER|=1<<0;           //允许更新中断
        MY_NVIC_Init(0,0,TIM3_IRQn,2);//优先级         

}
void Timer3_ENABLE(void)
{
      TIM3->CR1|=0x01;            //定时器更新
}
static         u8 Engine_number=0;
//发动机转速         
void TIM3_IRQHandler(void)
{
        u16 tsr;
        tsr=TIM3->SR;
if(Engine_times<1000||Engine_times==1000)
{
        if(tsr&0X08)//捕获更新标记
        {
                Engine_number++;
               Timer5_ENABLE();
        }
}else
//        if(Engine_times==1000||Engine_times>1000)
        {
                USART1_Send(&Engine_number,1);
                Engine_number=0;
                Engine_times=0;
                TIM5->CR1=~(1<<0);    //不是能定时器5
                TIM3->SR=0;//清楚中断标记位       
}


程序主要内容为配置定时器3通道3,且当产生捕获标记时开始使能定时器5计数,当超过1S中发送,清空数值关闭定时器5,
目前存在的问题进不去捕获更新标记if里。
不知道是不是配置错误还是程序不完善。
谢谢

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

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2018-4-18
在线时间
18 小时
 楼主| 发表于 2018-7-27 19:34:25 | 显示全部楼层
捞一下,上面部分有改正 TIM3->SR=0;//清楚中断标记位&#160; 拿到了外面,且TIM5->CR1 &= 0xFE;    //不使用定时器5
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-28 21:47:21 | 显示全部楼层
仿真找问题,看能否进入中断先。
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10859
金钱
10859
注册时间
2014-6-12
在线时间
1038 小时
发表于 2018-7-29 07:51:10 | 显示全部楼层
你发动机转速脉冲是从那脚输入,用哪个定时器计数?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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