打印

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

[复制链接]
2655|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

使用特权

评论回复
5
yzzly|  楼主 | 2010-7-16 12:53 | 只看该作者
靠,只言片语提示下不就得了!

使用特权

评论回复
6
香水城| | 2010-7-16 13:44 | 只看该作者
靠,只言片语提示下不就得了!
yzzly 发表于 2010-7-16 12:53


只言片语:看启动文件。

使用特权

评论回复
7
yzzly|  楼主 | 2010-7-16 13:59 | 只看该作者
本帖最后由 yzzly 于 2010-7-16 14:02 编辑

看到了,就是说函数名必须是固定,当然也可以修改启动文件的向量名。谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1183

帖子

3

粉丝