久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2747|回復(fù): 0
收起左側(cè)

STM32編碼器測(cè)距程序

[復(fù)制鏈接]
ID:944437 發(fā)表于 2021-6-27 23:41 | 顯示全部樓層 |閱讀模式
/*- TIM5編碼器模式配置 -*/
        //TIM_DeInit(TIM5);
        TIM_TimeBaseStructure.TIM_Period = 65535;//計(jì)次數(shù);
        TIM_TimeBaseStructure.TIM_Prescaler = 0;//
        TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1 ;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);              

        TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);        //配置編碼器模式觸發(fā)源和極性
        
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //CC1S=01         選擇輸入端 IC1映射到TI2上
         TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_BothEdge;        //上升沿捕獲
         TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI2上
         TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;         //配置輸入分頻,不分頻?
         TIM_ICInitStructure.TIM_ICFilter = 0x01;//IC1F=0000 配置輸入濾波器 不濾

        TIM_ICInit(TIM5, &TIM_ICInitStructure);
        
        NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//搶占優(yōu)先級(jí)2
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子優(yōu)先級(jí)3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure);        //根據(jù)指定的參數(shù)初始化VIC寄存器
        
        
        
        TIM_ClearFlag(TIM5, TIM_FLAG_Update);
      TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);         
               
        TIM_SetCounter(TIM5,0);
        TIM_Cmd(TIM5, ENABLE);   //啟動(dòng)TIM5定時(shí)器
}

/**************************************************************************
函數(shù)功能:?jiǎn)挝粫r(shí)間讀取編碼器計(jì)數(shù),此函數(shù)在定時(shí)器中斷里面用我的是定時(shí)器6每隔5ms讀取一次
入口參數(shù):定時(shí)器
返回  值:計(jì)數(shù)值
**************************************************************************/
int x=0;
int Read_Encoder(u8 TIMX)
{
    int Encoder_TIM;   
   switch(TIMX)
         {
                 case 3:  Encoder_TIM= (short)TIM3 -> CNT;  TIM3 -> CNT=0;break;//
                 case 4:  Encoder_TIM= (short)TIM4 -> CNT;  TIM4 -> CNT=0;break;        
                 case 5:  Encoder_TIM= (short)TIM5 -> CNT;  TIM5 -> CNT=0;break;        
                 default:  Encoder_TIM=0;
         }
                return Encoder_TIM;
}

初始化編碼選擇編碼模式
TIM_EncoderInterfaceConfig(TIM5, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge ,TIM_ICPolarity_BothEdge);主函數(shù),距離可通過串口打印出來
int main(void)
{                 
        uart_init(115200);                                                                   //USART1_TX   PA9   USART1_RX          PA10
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
        delay_init();
        MOTOR_Init();                                                                     //PC0,1 2 3
        TIM6_Mode_Config_Init();                                                         //使能定時(shí)器6 5ms中斷一次                                                     
    TIM4_Encoder_Init();                                                                //使能TIM4對(duì)應(yīng)的編碼器                                        //PB6 PB7
        TIM5_Encoder_Init();                                                                   //使能TIM5對(duì)應(yīng)的編碼器                                    //PA0 PA1         
        while(1)
        {
   ;
        }
}

void TIM6_IRQHandler(void)                                                                //定是時(shí)間不能太長(zhǎng)否則計(jì)數(shù)器溢出了就會(huì)測(cè)量錯(cuò)誤
{        

        if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)  
        {     
                danweilenth( Read_Encoder(4),Read_Encoder(5));        //每隔5ms中斷一次 讀取對(duì)應(yīng)CNT的值,并計(jì)算路程
                printf("Encoder.M1Lneth=%f\r\n",Encoder.M1Lneth);//打印出電機(jī)1的路程
                printf("Encoder.M2Lneth=%f\r\n",Encoder.M2Lneth);//打印出電機(jī)2的路程        
        }           
        TIM_ClearITPendingBit(TIM6, TIM_IT_Update);
}

相關(guān)代碼下面有下載可自行下: 兩個(gè)編碼器測(cè)距代碼.7z (191.89 KB, 下載次數(shù): 25)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本在线视频一区二区 | 国产精品日产欧美久久久久 | 狠狠色综合久久丁香婷婷 | 中文一区二区 | 亚洲精品乱码久久久久久按摩观 | 免费在线观看一区二区三区 | av入口 | 国产黄色在线观看 | 亚洲成人动漫在线观看 | 免费一区 | 99精品网站| 97超碰成人 | 午夜成人在线视频 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 一级黄色片日本 | 最新中文字幕久久 | 精品国产乱码一区二区三区a | 午夜精品在线观看 | 亚洲欧美日韩在线 | 国产高清av免费观看 | 日韩在线 | 精品国产高清一区二区三区 | 国产精品视频网址 | 国产精品不卡 | av中文字幕网站 | 精品久久久久久久 | 精品一区二区久久久久久久网站 | 91一区二区在线观看 | 男女羞羞视频网站 | 日韩在线不卡 | 国产在线观| 亚洲国产精品久久久久秋霞不卡 | 岛国av在线免费观看 | 国产日产欧产精品精品推荐蛮挑 | 午夜精品一区二区三区在线 | 男女下面一进一出网站 | 毛片99 | 国产精品1区 | 在线观看免费av网 | 日韩欧美大片 | 久久精品国产99国产精品 |