سلام بر همگی. من با کمک دوستان این فروم دارم از avr به arm مهاجرت میکنم و تجربمم خیلی کمه
تو اولین برنامه چند تا led را با pushbotton روشن خاموش کردم. الان میخوام همین led هارو با راه اندای interrupt روشن و خاموش کنم(toggle)
برناممو به صورت زیر نوشتم ولی جواب نمیگیرم. ممنون میشم بازم راهنماییم کنید.
تو اولین برنامه چند تا 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
// ----------------------------------------------------------------------------




دیدگاه