اطلاعیه

Collapse
No announcement yet.

تابع OverFlow میکروی stm8s برای تایمر چجوری نوشته میشه؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تابع OverFlow میکروی stm8s برای تایمر چجوری نوشته میشه؟

    سلام.
    یه سوال کوتاه دارم که هرچی سرچ کردم نتونستم چیزی پیدا کنم.
    بیشتر محاسبات و اینجور چیزا راجب تایمرا توی میکروی stm8s003f3 یاد گرفتم. ولی هرچی دنبال یه تابع اینتراپت overflow یا همون سرریز تایمر میگردم هیچی پیدا نمیکنم.
    فقط هم دنبال یه نمونه کد هستم.
    مثلا برای نمونه کد زیر که از تایمر 2 استفاده میکنه، چجوری اینو تبدیل به اینتراپت overflow کنم؟
    و یه سوال دیگه که این تابع سرعتش از 1 میکرو ثانیه بیشتره؟ اگر کلاک 2 مگاهرتز باشه؟
    کد:
    #include "STM8S.h"
     
     
    void clock_setup(void);
    void GPIO_setup(void);
    void TIM2_setup(void);
     
     
    void main(void)
    {
        clock_setup();
        GPIO_setup();
        TIM2_setup();
                    
        while(TRUE)
        {
              
    
        };
    }
     
     
    void clock_setup(void)
    {
        CLK_DeInit();
                    
        CLK_HSECmd(DISABLE);
        CLK_LSICmd(DISABLE);
        CLK_HSICmd(ENABLE);
        while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == FALSE);
                    
        CLK_ClockSwitchCmd(ENABLE);
        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);
        CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
                    
        CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, 
        DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
                    
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, DISABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, ENABLE);
        CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE);
    }
     
     
    void GPIO_setup(void)
    {
        GPIO_DeInit(GPIOD);
        GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
    }
     
     
    void TIM2_setup(void)
    {
        TIM2_DeInit();
        TIM2_TimeBaseInit(TIM2_PRESCALER_2048, 1952);
        TIM2_Cmd(ENABLE);
    }
لطفا صبر کنید...
X