打印
[STM32F1]

stm32F103串口通讯问题

[复制链接]
1100|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ltqltq20012001|  楼主 | 2016-11-18 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:
   我刚学STM32 ,现在通过串口读取一个传感器的数据,但是读取不到,请高手给指点一下 谢谢

程序如下:
1.配置程序:
void USART1_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 , ENABLE);
       
        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);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       

        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_Tx | USART_Mode_Rx;
        USART_Init(USART1, &USART_InitStructure);
        USART_Cmd(USART1, ENABLE);
}
2.主程序:
u8 Res;
main{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
USART1_Config();
while(1)
               
        {       
       
                USART_SendData(USART1, 0X7704000105        );
                while (USART_GetFlagStatus(USART1, USART_FLAG_TXE==RESET));
       
       
                Res=USART_ReceiveData(USART1);
             }
}

在线监控 发现波特率怎么显示 86400?
沙发
mmuuss586| | 2016-11-18 17:37 | 只看该作者
波特率不对,可能时钟不对吧;

现在是读到的数据不对,还是一直没数据?
数据不对可能波特率问题;

使用特权

评论回复
板凳
yklstudent| | 2016-11-18 19:48 | 只看该作者
系统时钟肯定没有配置正确

使用特权

评论回复
地板
ltqltq20012001|  楼主 | 2016-11-18 22:42 | 只看该作者
mmuuss586 发表于 2016-11-18 17:37
波特率不对,可能时钟不对吧;

现在是读到的数据不对,还是一直没数据?

我把系统时钟由72M改为8M了 ,这次波特率显示9600了,但是还是读不到数据,数据一直显示为零;但是该传感器 通过串口接到电脑上 用串口调试助手,发送 77 04 00  01 05 可以接收到 相应的数据。但是接到STM32板子上就接收不到,是不是程序的问题,板子用的是开发板应该没问题。

使用特权

评论回复
5
ltqltq20012001|  楼主 | 2016-11-18 22:48 | 只看该作者
ltqltq20012001 发表于 2016-11-18 22:42
我把系统时钟由72M改为8M了 ,这次波特率显示9600了,但是还是读不到数据,数据一直显示为零;但是该传感 ...

在线监控,可以看到USART1_SR  的TC位前面的勾在变化,并且USART1_SR 也在OX0080和0X00C0之间切换, USART1_DR 的值时钟为 0X0000  ,并且res用watch窗口监控显示为零。
     头疼呀 请各位大侠给小弟指点一下,不胜感谢!

使用特权

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

本版积分规则

4

主题

9

帖子

0

粉丝