打印
[STM32F1]

STM32F103C8T6 串口1为什么不工作?

[复制链接]
785|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huwr|  楼主 | 2023-3-2 18:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用同样的程序,在这个芯片中初始化串口三,发送都没问题,修改时钟和gpio,再用于串口1上就有问题了,这个PA9的端口是没问题的,我不用串口直接置1都是可行的,可为什么串口1不工作我就搞不懂了
        int main(void)
{
          SystemInit();//ÅäÖÃϵͳʱÖÓΪ 72M
          LED_Init();//led³õʼ»¯
          LED(ON);        
        
        
                GPIO_InitTypeDef GPIO_InitStructure;
                USART_InitTypeDef USART_InitStructure;

        /* ʹÄÜ USART1 ʱÖÓ*/
                RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        

/* USART1 ʹÓÃIO¶Ë¿ÚÅäÖà */   
  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);   //³õʼ»¯GPIOA
         
        /* USART1 ¹¤×÷ģʽÅäÖà */
        USART_InitStructure.USART_BaudRate = 115200;        //²¨ÌØÂÊÉèÖãº9600
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;        //Êý¾ÝλÊýÉèÖãº8λ
        USART_InitStructure.USART_StopBits = USART_StopBits_1;         //ֹͣλÉèÖãº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);  //³õʼ»¯USART1
        
    /*ʹÄÜ´®¿Ú1½ÓÊÕÖжÏ*/
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART1, ENABLE);// USART3ʹÄÜ

         /*·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý*/
while(1)
{   
          u8 i=0xFF;
    USART_SendData(USART1,i);
}
}

使用特权

评论回复
沙发
huwr|  楼主 | 2023-3-2 18:39 | 只看该作者
我眼瞎了。。。。。。。。。。

使用特权

评论回复
板凳
geraldbetty| | 2023-5-13 13:00 | 只看该作者
排除硬件方面:1.排除RX和TX接反;2.排除串口线是否松动或者接口处虚焊;3.排除收发方是否共地

使用特权

评论回复
地板
iyoum| | 2023-5-13 13:10 | 只看该作者
需要对串口的设置、时钟源、引脚和中断等方面进行综合排查

使用特权

评论回复
5
guijial511| | 2023-5-13 23:12 | 只看该作者
这个排版说实话看起来有点眼花,论坛有代码粘贴功能啊。

使用特权

评论回复
6
usysm| | 2023-5-14 20:52 | 只看该作者
如果使用了中断方式接收串口数据,在使用前需要对中断进行初始化及相关配置,否则会导致串口无法正常接收数据。

使用特权

评论回复
7
sanfuzi| | 2023-5-14 21:48 | 只看该作者
看看串口中断服务函数有没有清除中断标志,如果没清除则出不了中断函数。

使用特权

评论回复
8
MessageRing| | 2023-5-14 22:34 | 只看该作者
看下配置有没有配置好

使用特权

评论回复
9
pmp| | 2023-5-18 14:53 | 只看该作者
检查串口的初始化设置是否正确              

使用特权

评论回复
10
febgxu| | 2023-5-18 15:16 | 只看该作者
串口接收使能没打开               

使用特权

评论回复
11
香水城| | 2023-5-18 15:30 | 只看该作者
你注意下UART1与uart3时钟的差别。

使用特权

评论回复
12
ingramward| | 2023-5-18 16:25 | 只看该作者
在使用串口之前,需要对串口进行初始化设置,并确认波特率、数据位数、停止位数等参数是否正确。

使用特权

评论回复
13
backlugin| | 2023-5-18 16:31 | 只看该作者
确保UART1的引脚配置正确,包括TX和RX引脚的设置以及复用映射表选择是否正确。

使用特权

评论回复
14
biechedan| | 2023-5-21 10:20 | 只看该作者
串口通信需要时钟源提供时钟信号,如果时钟源配置错误或者没有正确开启,就会导致串口无法正常工作。

使用特权

评论回复
15
maqianqu| | 2023-5-21 11:36 | 只看该作者
在使用串口之前,需要对串口进行初始化设置,并确认波特率、数据位数、停止位数等参数是否正确。

使用特权

评论回复
16
hudi008| | 2023-5-21 11:58 | 只看该作者
检查串口的初始化设置是否正确              

使用特权

评论回复
17
juliestephen| | 2023-5-21 12:23 | 只看该作者
一般这种情况是引脚接线不正确引起的

使用特权

评论回复
18
phoenixwhite| | 2023-5-21 13:05 | 只看该作者
需要检查中断配置是否正确。可以使用调试工具来判断程序是否进入了正确的中断函数。

使用特权

评论回复
19
ingramward| | 2023-5-21 16:06 | 只看该作者
串口接收使能没打开               

使用特权

评论回复
20
timfordlare| | 2023-5-21 16:16 | 只看该作者
确保UART1的引脚配置正确,包括TX和RX引脚的设置以及复用映射表选择是否正确。

使用特权

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

本版积分规则

780

主题

8627

帖子

5

粉丝