微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > stm32串口调试问题

stm32串口调试问题

时间:10-02 整理:3721RD 点击:
串口中断服务函数void  USART1_IQRHandler(void)
{
   if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
    GPIO_SetBits(GPIOA,GPIO_Pin_0);
     USART_ClearITPendingBit(USART1,USART_IT_RXNE);
  }
}
主函数
int   main(void)
{
  NVIC_Configuration();
     USART1_Config();
    while(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(USART1, &USART_InitStructure);   //填充完结构体,调用库函数USART_Init()向寄存器写入配置参数。   
     USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开接收中断
  USART_Cmd(USART1, ENABLE);
为什么我一开串口调试工具灯就灭了,我还没发数据灯就没了,而且一打开串口灯又亮了pa1.0 不知道咋回事

有可能是你的串口调试软件的问题啊,打开软件他就发送了一个数据,纯属猜测

串口配置应该没问题  
看看程序的其他地方有没有使用p1.0口的led灯的,看看原理图led是高电平亮还是低电平亮,在中断里翻转led状态,。

     /* Enable USART1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
       
     /* Configure USART 1 Tx as alternate function push-pull */
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
                GPIO_Init(GPIOA, &GPIO_InitStructure);
       
     /* Configure USART 2 Rx as input floating */
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
       

如上,你有没有开串口的时钟,有没有去设置你串口的TX、RX的引脚的输入或输出的类型呢

'一开串口调试工具灯就灭了,我还没发数据灯就没了,而且一打开串口灯又亮了pa1.0 不知道咋回事'
’灭了‘和’没了‘是不是都是指不亮了?’而且一打开串口灯又亮了‘如何打开?
灯是PA0低电平亮还是高电平亮?
如果你在中断例程里面没有将引起中断的状态位清零,你中断一返回,马上就会又产生中断,就死在中断里面了!应该最后这句对你有用

    GPIO_SetBits(GPIOA,GPIO_Pin_0);
把这句话注释掉 看看有什么现象

这问题LZ应该解决了,楼上那么多高手都已经给出所有的可能了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top