OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13810|回复: 6

求助!stm32f407 串口配置

[复制链接]

5

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-29
在线时间
0 小时
发表于 2013-8-1 10:09:46 | 显示全部楼层 |阅读模式
初次使用stm32的串口,参照网上找到的f1的例程改了改用在f4上。可是从超级终端上看就是没有收到数据。是我配置的有问题么?用的是usart3,配置文件如下:

void USART_RCC_Configuration(void)
{
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
}

void USART_GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
 
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_USART3);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_USART3);
}

void USART_Configuration(void)
{
  USART_InitTypeDef USART_InitStruct;
 
  USART_RCC_Configuration();
 
  USART_InitStruct.USART_BaudRate = 115200;
  USART_InitStruct.USART_StopBits = USART_StopBits_1;
  USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  USART_InitStruct.USART_Parity = USART_Parity_No;
  USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
 
  USART_Init(USART3, &USART_InitStruct);
  USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
  USART_Cmd(USART3, ENABLE);
 
  USART_GPIO_Configuration();
}

主程序:
int main(void)
{
    SystemInit();
    USART_Configuration();
    printf("\x0c\0");printf("\x0c\0");
    printf("\033[1;40;32m");
    printf("\r\n*******************************************************************************");
    printf("\r\n************************ Copyright 2009-2012, ViewTool ************************");
    printf("\r\n*************************** http://www.viewtool.com ***************************");
    printf("\r\n***************************** All Rights Reserved *****************************");
    printf("\r\n*******************************************************************************");
    printf("\r\n");
    while(1)
    {
           
        if(USART_GetFlagStatus(USART3, USART_IT_RXNE) != RESET)
        {
        printf("%c",USART_ReceiveData(USART3));
        }

    }
}
还请各位指导!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-8-1 10:33:25 | 显示全部楼层
407可以软件仿真不?看看串口3的寄存器状态,是不是正确吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

93

主题

745

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1843
金钱
1843
注册时间
2012-9-16
在线时间
285 小时
发表于 2013-8-1 12:30:48 | 显示全部楼层
回复【楼主位】eika:
---------------------------------
可以仿真吗?
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

5

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-7-29
在线时间
0 小时
 楼主| 发表于 2013-8-1 14:34:10 | 显示全部楼层
我查看了下串口的寄存器,从配置上来看应该是正确的吧。如下图:


但是就是收不到串口发出的信息,用示波器看。RX和TX两条线都是高电平。这是怎么回事?

回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-31
在线时间
3 小时
发表于 2013-8-1 20:51:26 | 显示全部楼层
同时等待解决。楼主用的是stm32f4 discover吗?
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
发表于 2013-8-1 20:53:52 | 显示全部楼层
void usart3_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); 
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_USART3);  
GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_USART3);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(GPIOC, &GPIO_InitStructure);    

USART_InitStructure.USART_BaudRate = 115200;
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(USART3, &USART_InitStructure);
USART_Cmd(USART3, ENABLE);

printf("usart3 init ok.\r\n");
}


int fputc(int ch, FILE *f)
{
  while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
  USART_SendData(USART3, (u8) ch);
  return ch;
}   


int fgetc(FILE *f)
{
while (USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(USART3);
}
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-7-31
在线时间
3 小时
发表于 2013-8-2 09:08:20 | 显示全部楼层
问题解决啦。谢谢楼上的源码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表