اطلاعیه

Collapse
No announcement yet.

راه اندزی interrupt_ stm32

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

    راه اندزی interrupt_ stm32

    سلام بر همگی. من با کمک دوستان این فروم دارم از avr به arm مهاجرت میکنم و تجربمم خیلی کمه تو اولین برنامه چند تا led را با pushbotton روشن خاموش کردم. الان میخوام همین led هارو با راه اندای interrupt روشن و خاموش کنم(toggle)
    برناممو به صورت زیر نوشتم ولی جواب نمیگیرم. ممنون میشم بازم راهنماییم کنید.

    #include <stdio.h>
    #include "diag/Trace.h"
    #include "stm32f0xx.h"
    #include "stm32f0xx_conf.h"
    // ----------------------------------------------------------------------------
    void Delay(__IO uint32_t nCount) {
    while(nCount--) {
    }
    }


    int main(int argc, char* argv[])
    {




    GPIO_InitTypeDef GPIO_InitStructure;




    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);





    NVIC_InitTypeDef NVIC_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;


    /* Enable GPIOA clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    /* Enable SYSCFG clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; // PA10 is connected to high, so use pulldown resistor
    GPIO_Init(GPIOA, &GPIO_InitStructure);



    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource10);



    EXTI_InitStructure.EXTI_Line = EXTI_Line10; //
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // Interrupt mode
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; // Trigger on Rising edge (Just as user presses btn)
    EXTI_InitStructure.EXTI_LineCmd = ENABLE; // Enable the interrupt
    EXTI_Init(&EXTI_InitStructure); // Initialize EXTI



    NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn; // Function name for EXTI_Line10 interrupt handler
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01; // Set priority
    // Set sub priority
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // Enable the interrupt
    NVIC_Init(&NVIC_InitStructure); // Add to NVIC






    // Turn on LED


    if(EXTI_GetITStatus(EXTI_Line10) != RESET){
    GPIO_SetBits(GPIOB, GPIO_Pin_0);


    EXTI_ClearITPendingBit(EXTI_Line10);}






    while(1){
    // Do nothing here, using interrupts
    }


    return 0;




    // Infinite loop, never return.
    }


    #pragma GCC diagnostic pop


    // ----------------------------------------------------------------------------



    جدیدترین ویرایش توسط nm272; ۰۱:۳۱ ۱۳۹۹/۰۲/۱۹.
  • ۳۶٬۱۰۰ ریال ۲۷٬۰۷۵ ریال
    ۲۱٬۳۰۰ ریال ۱۰٬۶۵۰ ریال
    ۲٬۶۳۰٬۰۰۰ ریال ۲٬۳۱۴٬۴۰۰ ریال
    ۱٬۱۰۰٬۰۰۰ ریال ۹۶۸٬۰۰۰ ریال
    ۲٬۱۶۳٬۰۰۰ ریال ۱٬۷۳۰٬۴۰۰ ریال
    ۲٬۱۸۰٬۰۰۰ ریال ۱٬۹۶۲٬۰۰۰ ریال
    ۴٬۱۰۰٬۰۰۰ ریال ۳٬۶۹۰٬۰۰۰ ریال
    ۳۴٬۰۰۰٬۰۰۰ ریال ۳۲٬۳۰۰٬۰۰۰ ریال
    ۱٬۵۹۰٬۰۰۰ ریال ۱٬۳۵۱٬۵۰۰ ریال

    #2
    پاسخ : راه اندزی interrupt_ stm32

    نوشته اصلی توسط nm272 نمایش پست ها
    سلام بر همگی. من با کمک دوستان این فروم دارم از avr به arm مهاجرت میکنم و تجربمم خیلی کمه تو اولین برنامه چند تا led را با pushbotton روشن خاموش کردم. الان میخوام همین led هارو با راه اندای interrupt روشن و خاموش کنم(toggle)
    برناممو به صورت زیر نوشتم ولی جواب نمیگیرم. ممنون میشم بازم راهنماییم کنید.
    تو چه محیطی کد میزنین ؟ سرویس اینتراپت رو ننوشتین. صرفا فلگ اینتراپت رو چک میکنید که با توجه به اینکه تو حلقه هم نیست، قطعا عمل نمیکنه
    Si vis pacem, para bellum

    دیدگاه


      #3
      پاسخ : راه اندزی interrupt_ stm32

      نوشته اصلی توسط tiranoid نمایش پست ها
      تو چه محیطی کد میزنین ؟ سرویس اینتراپت رو ننوشتین. صرفا فلگ اینتراپت رو چک میکنید که با توجه به اینکه تو حلقه هم نیست، قطعا عمل نمیکنه
      تو eclipce
      ممنون با راهنمایی شما حلش کردم و جواب گرفتم.

      دیدگاه

      لطفا صبر کنید...