打印

STM32F4串口一直出来乱码

[复制链接]
9313|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我使用的是discover目标板,使用的是官网的库函数,如下:

void usart_init(void)
{
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
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_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
void gpio_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
}
void delay(void)
{
  int i;
  int j=1024;
  for(i=0;i<0X00FFFFFF;i++)
  {
   if(j>0)  
      {
   j--;
     }
  }
}

int main(void)
{
usart_init();
gpio_init();
while(1)
{
printf("0123");
  delay();
printf("4567");
delay();
  }
}


因为晶振为8M,所以在 stm32f4xx.h中改
#if !defined  (HSE_VALUE)
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */

在system_stm32f4xx.c中改
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      8

但是最后出来的还是乱码,不知道是怎么回事。

QQ截图20120607101033.jpg (167.2 KB )

QQ截图20120607101033.jpg
沙发
lkl10800139| | 2012-6-7 10:50 | 只看该作者
你好。我也做了串口,是正常的。你遇到的可能是这个问题,你看一下。

http://ayours.blog.163.com/blog/static/2075886201222710555511/
在F4-Discovery上调试串口,板上无串口接口芯片,需外接电平转换芯片和串口接口,通过插针引线连接两块电路板,板上3.3V供电180mA不足以支持MAX3232工作,故用usb提供的+5V来为其供电。STM32F405xx/STM32F407xx手册里里写道USART1的Pin map: Tx-PA9;RX-PA10。参考IAP的示例,昨天搞了一晚上无论如何都没有输出,很是奇怪。一直以为初始化不对。今天早晨发现手册Page56中Table7. Alternate function mapping中USART1_TX/USART1_RX映射到PB6/PB7。然后做了如下的初始化,串口的引脚跳到PB6、PB7,果然有输出。那么既然管脚map上首推的映射是PA9/PA10那么为什么没有输出呢,而且用示波器测试一直为高电平?原来Discovery的试验板将PA9连接到usb的vbus供电上了。

使用特权

评论回复
板凳
jinye645|  楼主 | 2012-6-7 14:59 | 只看该作者
谢谢,果然是这个问题。

使用特权

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

本版积分规则

0

主题

25

帖子

0

粉丝