新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用STM32的PWM輸入功能計算輸入PWM的周期

        使用STM32的PWM輸入功能計算輸入PWM的周期

        作者: 時間:2012-09-11 來源:網絡 收藏

        1、時鐘部分,TIMER2的時鐘頻率,我是初始化為36M.

        本文引用地址:http://www.104case.com/article/148408.htm

        RCC_PCLK1Config(RCC_HCLK_Div2); //設置低速AHB時鐘=系統時鐘/2

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // 倍頻系數為9 PLLCLK=8*9=72

        2、TIMER初始化

        TIM_DeInit(TIM2);

        TIM_TimeBaseStructure.TIM_Period = 65535;

        TIM_TimeBaseStructure.TIM_Prescaler = 18;

        TIM_TimeBaseStructure.TIM_ClockDivision = 0;

        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

        TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure);

        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;

        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV4;

        TIM_ICInitStructure.TIM_ICFilter = 0x0;

        TIM_IConfig(TIM2, TIM_ICInitStructure);

        TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1);

        TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); //復位模式為從模式

        TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //使能主從模式

        TIM_Cmd(TIM2, ENABLE); //使能TIM2計數器

        TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE); //使能CC2中斷請求

        3、TIMER中斷處理

        void TIM2_IRQHandler(void)

        {

        /* Clear TIM2 Capture compare interrupt pending bit */

        TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);

        /* Get the Input Capture value */

        IC2_Value = TIM_GetCapture2(TIM2);

        }

        注意事項:

        不知道為什么,的TIMER時鐘經過分頻率后,時鐘的精度誤差會隨分頻值變大而變大。在不分頻的情況下,我檢測1KHz的信號,誤差為0.5us。在18分頻的情況下,誤差已經不能看了。測量100Hz,根據捕獲值出來卻是105Hz。

        確實如朋友所講,在分頻處我理解錯了,分頻值=TIM_TimeBaseStructure.TIM_Prescaler +1,所以如果要分18分頻,只要將TIM_Prescaler=17即可。經這樣修改后測量誤差在萬分之5以內。謝謝朋友的提醒!!(上面的誤解我就不刪除了,留做以后警記,呵呵!)

        pwm相關文章:pwm原理


        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 罗定市| 金塔县| 德化县| 将乐县| 岳阳县| 图木舒克市| 靖边县| 鄂尔多斯市| 遵化市| 惠安县| 华池县| 巴楚县| 东乌珠穆沁旗| 常熟市| 合江县| 沐川县| 社旗县| 仙游县| 饶阳县| 南投市| 永川市| 长岛县| 六安市| 东至县| 积石山| 贵州省| 郎溪县| 固原市| 麻城市| 紫云| 万州区| 宁河县| 博爱县| 屏东县| 逊克县| 许昌市| 县级市| 伊金霍洛旗| 贵定县| 湾仔区| 嫩江县|