سلام بر همگی. من با کمک دوستان این فروم دارم از 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
// ----------------------------------------------------------------------------
دیدگاه