|
使用stm32f103ze,fsmc挂dm9000a。初始化OK。
中断线PA1
声明如下:
--------------------------------------------------------------------
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Connect DM9000 EXTI Line to GPIOA Pin 1 */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);
//声明IO
----------------------------分割线---------------------------------
/* Configure DM9000 EXTI Line to generate an interrupt on falling edge */
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/* Clear DM9000A EXTI line pending bit */
EXTI_ClearITPendingBit(EXTI_Line1);
//声明中断Line
---------------------------分割线-------------------------------
//使能中断
/* Enable the EXTI0 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
-----------------------------------分割线---------------------------
//中断服务
void EXTI1_IRQHandler(void)
{
extern void rt_dm9000_isr(void);
/* enter interrupt */
rt_interrupt_enter();
rt_dm9000_isr();
/* Clear the Key Button EXTI line pending bit */
EXTI_ClearITPendingBit(EXTI_Line1);
/* leave interrupt */
rt_interrupt_leave();
-------------------------------------------------------------------------
本人非常的菜,菜得无地自容
对0.3.1的BSP做了点小修改,结果中断无响应。。。
我设了dm9000a响应函数为断点,置一下swier1,然后发现中断ok,如果同时在主机无限ping下去,这时候会触发多次中断,鼠标狂点继续运行的话,可以ping通。但是如果不手动置或者点慢了,全部无响应。手头没有逻辑分析仪,看不出dm9000中断线有没有错误,但是这问题我搞不明白= =。
求指点,感激不尽 |
|