• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

串口中断

小多多55555 2018-01-04 浏览量:814

我用F4写了一个程序 就是在串口中断接收传感器的数据 然后对数据处理后 直接在主函数中打印出来 但移植到F1上后 不能正常运行 原因是 一直没有进中断 但是 不知道哪有问题 传感器是再发数据的 硬件连接应该也没问题传感器的TX接的单片机PA10 请大家给分析分析 是哪个环节出了问题

void USART1_Config(u32 bound)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    USART_InitStructure.USART_BaudRate = bound;
    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(USART1, &USART_InitStructure); 
    USART_Cmd(USART1, ENABLE);
}

void USART1_IRQHandler(void)                
{
    u8 Res;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
    {
        printf("1");  //这个1一直打印不出来 也就是说 一直没有进串口中断 
        Res =USART_ReceiveData(USART1);
        USART_RX_BUF[USART_RX_STA]=Res;
    if(USART_RX_STA==0&&USART_RX_BUF[0]!=0x42)
    {
        USART_RX_STA=0;
        return;
    }
    USART_RX_STA++;
    if(USART_RX_STA==32)
    {
        USART_RX_STA=0;
        sign=1;
    }
  } 



0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:2
  • 这段配置没问题啊。调试一下看看寄存器里的内容对不对,中断有没有挂起等等。
电子老工程师 回复了 :ST原厂新品,没有国产替代型号。 回复

  • 程序看着没什么问题,检查下自收自发可不可以。

相关问题

问题达人换一批

串口中断