请教关于中断向量和中断服务函数的问题

[复制链接]
3228|6
 楼主| yzzly 发表于 2010-7-16 10:19 | 显示全部楼层 |阅读模式
本帖最后由 yzzly 于 2010-7-16 10:43 编辑

中断初始化时的中断向量xxx_IRQn是如何与xxx_IRQHandler()中断服务函数对应起来的?例如USART1中断:
中断设置函数
void NVIC_Configuration(void)
{
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
中向量USART1_IRQn是如何与stm32f10x_it.c文件内的函数
void USART1_IRQHandler(void)
{
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    /* Read one byte from the receive data register */
    RxBuffer1[RxCounter1++] = USART_ReceiveData(USART1);
    if(RxCounter1 == NbrOfDataToRead1)
    {
      /* Disable the USART1 Receive interrupt */
      USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
    }
  }
  
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
  {   
    /* Write one byte to the transmit data register */
    USART_SendData(USART1, TxBuffer1[TxCounter1++]);
    if(TxCounter1 == NbrOfDataToTransfer1)
    {
      /* Disable the USART1 Transmit interrupt */
      USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    }   
  }
}
建立关系?
在51中写中断服务函数时有Interrupt n关键字做说明,使函数与向量一一对应;在DSP中利用语句"PieVectTable.SPIRXINTA     =&SPIARXINT_ISR;"把中断服务函数的入口地址付给对应的寄存器,记得ARM中好像也是这样;STM32F系列是个什么样的机制使之一一对应?谢谢!
 楼主| yzzly 发表于 2010-7-16 12:04 | 显示全部楼层
怎么没有人响应啊?难道我的问题提的就有问题甚至很好笑?
香水城 发表于 2010-7-16 12:11 | 显示全部楼层
这个问题讨论过很多次,你搜索一下吧。
luckytoad 发表于 2010-7-16 12:39 | 显示全部楼层
看内核,看M3
 楼主| yzzly 发表于 2010-7-16 12:53 | 显示全部楼层
靠,只言片语提示下不就得了!
香水城 发表于 2010-7-16 13:44 | 显示全部楼层
靠,只言片语提示下不就得了!
yzzly 发表于 2010-7-16 12:53


只言片语:看启动文件。
 楼主| yzzly 发表于 2010-7-16 13:59 | 显示全部楼层
本帖最后由 yzzly 于 2010-7-16 14:02 编辑

看到了,就是说函数名必须是固定,当然也可以修改启动文件的向量名。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1194

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部