这一块停止了好几天了,因为总感觉没有理解,今天总算是理解了一点。唯一的结论就是多看Cortex-M3。
程序非常非常简单,但是现在还有一个最大的疑点就是不知道为什么,用STLINKII一设置断点,程序就跑飞了。
把这个最简单的程序贴在这里,以便以后查询。
以下是main.c中的代码。
int main(void)
{
RCC_Configuration();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIOC->CRL=0x11110000;
GPIOD->CRL=0x44444444;
AFIO->EXTICR[0]|=AFIO_EXTICR1_EXTI3_PD;
AFIO->EXTICR[1]|=AFIO_EXTICR2_EXTI4_PD;
EXTI->IMR= EXTI_IMR_MR3|EXTI_IMR_MR4;
EXTI->FTSR=EXTI_RTSR_TR3|EXTI_RTSR_TR4;
NVIC->IP[EXTI3_IRQn]=0;
NVIC->IP[EXTI4_IRQn]=1;
NVIC->ISER[0]=0x00000600;
while (1)
{
/* GPIOC->BSRR= GPIO_Pin_5;
Delay(0x00ffffff);
GPIOC->BRR= GPIO_Pin_5;
Delay(0x00ffffff); */
}
}
以下是stm32f10x_it.c中需要添加的。
void EXTI3_IRQHandler(void)
{
GPIOC->BSRR= GPIO_Pin_7;
GPIOC->BSRR= GPIO_Pin_6;
// GPIOC->BSRR= GPIO_Pin_6;
EXTI->PR=EXTI_Line3;
}
void EXTI4_IRQHandler(void)
{
GPIOC->BRR= GPIO_Pin_7;
GPIOC->BRR= GPIO_Pin_6;
EXTI->PR=EXTI_Line4;
}
以下是stm32f10x_it.h中添加的代码。
void EXTI3_IRQHandler(void);
void EXTI4_IRQHandler(void);
文章评论(0条评论)
登录后参与讨论