打印
[STM32F1]

STM32F103RC串口发送死循环

[复制链接]
776|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhxingyu|  楼主 | 2020-1-8 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhxingyu 于 2020-1-8 22:46 编辑

现用到STM32F103RC的串口1(PA9和PA10),给串口发送数据就while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);在这里死循环,直至看门狗复位。
初始代码如下:
RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO), ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_USART1,DISABLE);
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                //TX
    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;                //RX
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    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_ITConfig(USART1, USART_IT_IDLE, ENABLE);//¿ªÆô¿ÕÏÐÖжÏ
    USART_Cmd(USART1, ENABLE);
    USART_ClearFlag(USART1,USART_FLAG_TC);

请各位用过的朋友指导一下,谢谢!


使用特权

评论回复
沙发
icecut| | 2020-1-8 22:47 | 只看该作者
建议使用stm32cubeMx生成代码

使用特权

评论回复
板凳
yklstudent| | 2020-1-8 23:45 | 只看该作者
建议发送死循环可以查询串口寄存器状态值部分,对应芯片手册分析查找原因

使用特权

评论回复
地板
kingkits| | 2020-1-9 08:38 | 只看该作者
给串口发送数据就while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);在这里死循环
USART_ClearFlag(USART1,USART_FLAG_TC);
在这条命令之后,只有发送新的数据完成后,TC才会置位

可以考虑这样
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

使用特权

评论回复
5
sonicll| | 2020-1-9 08:49 | 只看该作者
你的第三行代码
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

使用特权

评论回复
6
zhxingyu|  楼主 | 2020-1-9 09:38 | 只看该作者
sonicll 发表于 2020-1-9 08:49
你的第三行代码
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

非常感谢!就这里问题,火眼金睛,厉害!!!我真的

使用特权

评论回复
7
观海| | 2020-2-3 16:46 | 只看该作者
果然很厉害

使用特权

评论回复
8
guanjiaer| | 2020-2-3 17:25 | 只看该作者
原来是这样的笔误  火眼金睛啊

使用特权

评论回复
9
heimaojingzhang| | 2020-2-3 17:28 | 只看该作者
不细心看真看不出来

使用特权

评论回复
10
keaibukelian| | 2020-2-3 17:30 | 只看该作者
难道编译的时候不会报错吗

使用特权

评论回复
11
labasi| | 2020-2-3 17:31 | 只看该作者
如果是cube生成的就应该不会有这种错误啊

使用特权

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

本版积分规则

69

主题

309

帖子

3

粉丝