打印
[STM32F1]

只变化了一次

[复制链接]
316|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pangb|  楼主 | 2022-8-6 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把TIM2 作为计数器用,外部脉冲输入端接脉冲编码器(带编码器的马达)的输出,两个脚。初始化如下:
     /**************************************************************************
函数功能:把TIM2初始化为编码器接口模式
入口参数:无
返回  值:无
**************************************************************************/
void Horizontal_Motor_Encoder_Init_TIM2(void)
{
        RCC->APB1ENR|=1<<0;     //TIM2时钟使能
        RCC->APB2ENR|=1<<2;    //使能PORTA时钟
        GPIOA->CRL&=0XFFFFFF00;//PA0 PA1
        GPIOA->CRL|=0X00000044;//浮空输入
        /* 把定时器初始化为编码器模式 */
        TIM2->DIER|=1<<0;   //允许更新中断                                
        TIM2->DIER|=1<<6;   //允许触发中断
        NVIC_Init(2,3,TIM2_IRQn,1);

        /* Timer configuration in Encoder mode */
        TIM2->PSC = 0x0;//预分频器
        TIM2->ARR = ENCODER_TIM_PERIOD;//设定计数器自动重装值
        TIM2->CR1 &=~(3<<8);// 选择时钟分频:不分频
        TIM2->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
               
        TIM2->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
        TIM2->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
        TIM2->CCER &= ~(1<<1);         //CC1P='0'         IC1FP1不反相,IC1FP1=TI1
        TIM2->CCER &= ~(1<<5);         //CC2P='0'         IC2FP2不反相,IC2FP2=TI2
        TIM2->CCMR1 |= 3<<4; //        IC1F='1000' 输入捕获1滤波器
        TIM2->SMCR |= 3<<0;         //SMS='011' 所有的输入均在上升沿和下降沿有效

        TIM2->CNT = 0;
        
        TIM2->CR1 |= 0x01;    //CEN=1,使能定时器
}
中断函数如下:
void TIM2_IRQHandler(void)
{                                                                  
        if(TIM2->SR&0x0001)//溢出中断
                           
        TIM2->SR&=~(1<<0);//清除中断标志位         
        g_Horizontal_Circle_Counter ++ ;
}
当输出计算时,计数器的值一直在变化,但是g_Horizontal_Circle_Counter  就是只变化了一次

使用特权

评论回复
沙发
jiahy| | 2022-8-6 14:26 | 只看该作者
似乎中断只进去了一次一样

使用特权

评论回复
板凳
yszong| | 2022-8-6 14:28 | 只看该作者
用库函数操作啊

使用特权

评论回复
地板
wyjie| | 2022-8-6 14:31 | 只看该作者
void TIM2_IRQHandler(void)   //TIM2中断
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
LED0=!LED0;
}

使用特权

评论回复
5
kangzj| | 2022-8-6 14:33 | 只看该作者
编码器的动作频率是多少呀

使用特权

评论回复
6
zhenykun| | 2022-8-6 14:35 | 只看该作者
又没有可能反应没有那么快 或者中断函数处理函数太多

使用特权

评论回复
7
pangb|  楼主 | 2022-8-6 14:37 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
8
SantaBunny| | 2023-3-1 10:19 | 只看该作者
这可能是STM32F4XX芯片的一个BUG

使用特权

评论回复
9
Clyde011| | 2024-5-6 07:24 | 只看该作者

它们之间的间距应至少为0.5mm。

使用特权

评论回复
10
公羊子丹| | 2024-5-6 08:17 | 只看该作者

会占用PCB的空间,成本也会更高。

使用特权

评论回复
11
万图| | 2024-5-6 09:20 | 只看该作者

对于信号回路的峰值电压防护电路不应动作,通常在信号回路中,防护电路的动作电压是信号回路的峰值电压的1.3~1.6倍。

使用特权

评论回复
12
Uriah| | 2024-5-6 10:23 | 只看该作者

它们通常用于分线板或小模块。

使用特权

评论回复
13
帛灿灿| | 2024-5-6 12:19 | 只看该作者

开关管T交替工作于通/断两种状态,当开关管关断时,脉冲变压器处于“空载”状态,其中储存的磁能将被积累到下一个周期

使用特权

评论回复
14
Bblythe| | 2024-5-6 13:22 | 只看该作者

在印刷电路板制造中

使用特权

评论回复
15
周半梅| | 2024-5-6 15:18 | 只看该作者

选择测试方法和测试参数是检测过程中的重要步骤

使用特权

评论回复
16
Pulitzer| | 2024-5-6 16:21 | 只看该作者

它产生的噪声是对地噪声

使用特权

评论回复
17
童雨竹| | 2024-5-6 18:17 | 只看该作者

对于环氧树脂而言,一般把导热系数为0.5W/M·K的导热性能已经被定义为高导热

使用特权

评论回复
18
Wordsworth| | 2024-5-6 19:20 | 只看该作者

抑制各种高速信号产生的电磁波向外发射

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝