اموزش کار با وقفه های خارجی میکروکنترلر ARM
هدف از مثال زیر این است که شما با وقفههای خارجی EXTI)) وطریقه ی راهاندازی آن در میکروکنترلرهای ARM آشنا شوید.
شرح کلی برنامه
همانطور که در تصویر زیر مشاهده میکنید، در ابتدای برنامه کتابخانههای مربوطه فراخوانی شدهاند. سپس در قسمت دوم پیکربندی مربوط بهLED ها انجام شده است.در تابع STM_EVAL_LEDInit() کلاک و پیکربندی مربوط به LED ها انجام میگیرد. در قسمت سوم پیکربندی وقفهی خارجی انجام میشود که روتین وقفه در داخل فایل stm32f10x_it و در تابعEXTI9_5_IRQHandler() طبق شکل زیر قرار دارد.
[pastacode lang=”cpp” manual=”%2F*%20Includes%20——————————————————————*%2F%0A%23include%20%22stm32f10x.h%22%0A%23include%20%22bsp.h%22%0A%0A%0A%2F**%0A%20%20*%20%40brief%20%20Main%20program.%0A%20%20*%20%40param%20%20None%0A%20%20*%20%40retval%20None%0A%20%20*%2F%0Aintmain(void)%0A%7B%0A%20%20%2F*!%3C%20At%20this%20stage%20the%20microcontroller%20clock%20setting%20is%20already%20configured%2C%0A%20%20%20%20%20%20%20this%20is%20done%20through%20SystemInit()%20function%20which%20is%20called%20from%20startup%0A%20%20%20%20%20%20%20file%20(startup_stm32f10x_xx.s)%20before%20to%20branch%20to%20application%20main.%0A%20%20%20%20%20%20%20To%20reconfigure%20the%20default%20setting%20of%20SystemInit()%20function%2C%20refer%20to%0A%20%20%20%20%20%20%20system_stm32f10x.c%20file%0A%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20%0A%20%20%2F*%20Initialize%20LED1%20and%20Key%20Button%20mounted%20on%20STM3210X-EVAL%20board%20*%2F%0A%20%20STM_EVAL_LEDInit(LED1)%3B%0A%20%20STM_EVAL_LEDInit(LED2)%3B%0A%20%20STM_EVAL_LEDInit(LED3)%3B%0A%20%20STM_EVAL_LEDInit(LED4)%3B%0A%20%20%2F*%20Configure%20Pc.6%20%20in%20interrupt%20mode%20*%2F%0A%20%20EXTI9_5_Config()%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20while(1)%0A%20%20%7B%0A%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]
[pastacode lang=”cpp” manual=”%2F**%0A%20%20*%20%40brief%20%20This%20function%20handles%20External%20lines%209%20to%205%20interrupt%20request.%0A%20%20*%20%40param%20%20None%0A%20%20*%20%40retval%20None%0A%20%20*%2F%0AvoidEXTI9_5_IRQHandler(void)%0A%7B%0A%0A%20%20if(EXTI_GetITStatus(EXTI_Line6)%20!%3D%20RESET)%0A%20%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%2F*%20Toggle%20LED2%20*%2F%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED1)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED2)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED3)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED4)%3B%0A%20%20%20%20%2F*%20Clear%20the%20%20EXTI%20line%209%20pending%20bit%20*%2F%0A%20%20%20%20EXTI_ClearITPendingBit(EXTI_Line6)%3B%0A%20%20%7D%0A%0A%7D” message=”” highlight=”” provider=”manual”/]
آشنایی و کار با برنامه
ابتدا برنامه را با نرم افزار Keil باز کنید.
تغذیه 5 ولت را به برد آموزشی متصل کنید و بعد از اینکه پروگرامر ST-LINK را به برد متصل نمودید؛ برنامه را با استفاده از دکمه ی Download پروگرم نمائید.
دانلود مثال ها و pdf این مقاله
[pastacode lang=”cpp” manual=”%2F%0A%20%20*%20%40brief%20%20This%20function%20handles%20External%20lines%209%20to%205%20interrupt%20request.%0A%20%20*%20%40param%20%20None%0A%20%20*%20%40retval%20None%0A%20%20*%2F%0AvoidEXTI9_5_IRQHandler(void)%0A%7B%0A%0A%20%20if(EXTI_GetITStatus(EXTI_Line6)%20!%3D%20RESET)%0A%20%20%7B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%2F*%20Toggle%20LED2%20*%2F%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED1)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED2)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED3)%3B%0A%20%20%20%20%20STM_EVAL_LEDToggle(LED4)%3B%0A%20%20%20%20%2F*%20Clear%20the%20%20EXTI%20line%209%20pending%20bit%20*%2F%0A%20%20%20%20EXTI_ClearITPendingBit(EXTI_Line6)%3B%0A%20%20%7D%0A%0A%7D” message=”” highlight=”” provider=”manual”/]
آشنایی و کار با برنامه
ابتدا برنامه را با نرم افزار Keil باز کنید.
تغذیه 5 ولت را به برد آموزشی متصل کنید و بعد از اینکه پروگرامر ST-LINK را به برد متصل نمودید؛ برنامه را با استفاده از دکمه ی Download پروگرم نمائید.
دانلود مثال ها و pdf این مقاله
آشنایی و کار با برنامه
نظر بدهید