打印

串口3重映射问题

[复制链接]
3600|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
song19881218|  楼主 | 2012-7-18 15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口3重映射到PC10,PC11现在只能发送,但是进不去接收中断,求助,上代码
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

   GPIO_PinRemapConfig(GPIO_PartialRemap_USART3,ENABLE);   
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOC, &GPIO_InitStructure);
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOC, &GPIO_InitStructure);

DMA_DeInit(DMA1_Channel2);
DMA_tx_USART3_Configuration(1);
USART_InitStructure.USART_BaudRate = 9600;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_No;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx |   USART_Mode_Tx;
   USART_Init(USART3, &USART_InitStructure);
    USART_DMACmd(USART3,USART_DMAReq_Tx, ENABLE);
   DMA_Cmd(DMA1_Channel2, ENABLE);
USART_ITConfig(USART3, USART_IT_ERR, ENABLE);
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
   USART_Cmd(USART3, ENABLE);
沙发
song19881218|  楼主 | 2012-7-18 17:44 | 只看该作者
咋没人回答啊?

使用特权

评论回复
板凳
捡漏王子| | 2012-7-18 20:50 | 只看该作者
你串口中断打开没?

使用特权

评论回复
地板
figo20042005| | 2012-7-18 21:46 | 只看该作者
接收中断打开,进入中断接收

使用特权

评论回复
5
song19881218|  楼主 | 2012-7-19 16:34 | 只看该作者
4# figo20042005
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
这个不就是开接收中断的,倒数第二句

使用特权

评论回复
6
logokfu| | 2012-7-19 19:35 | 只看该作者
本帖最后由 **kfu 于 2012-7-19 19:36 编辑

stm32f10x_it.c 这里文件里面的中断函数你写了吗


/******************************************************************************/
/*            STM32F10x Peripherals Interrupt Handlers                        */
/******************************************************************************/

/**
  * @brief  This function handles USARTx global interrupt request.
  * @param  None
  * @retval None
  */
void USART1_IRQHandler(void)
{
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    /* Read one byte from the receive data register */
    RxBuffer[RxCounter++] = (USART_ReceiveData(USART1) & 0x7F);

    if(RxCounter == NbrOfDataToRead)
    {
      /* Disable the USART1 Receive interrupt */
         USART_SendData(USART1, TxBuffer[TxCounter++]);
      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, TxBuffer[TxCounter++]);

    if(TxCounter == NbrOfDataToTransfer)
    {
      /* Disable the USART1 Transmit interrupt */
      USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    }
  }
}

使用特权

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

本版积分规则

14

主题

190

帖子

1

粉丝