原创 STM32串口不能接收的一些可能原因

2011-6-18 12:33 7305 12 14 分类: 消费电子

 

STM32串口不能接收的一些可能原因

芯片是STM32F103VB,平台为MDK3.5,使用的是USART1,其引脚为PA9(TX)、PA10(RX)。

(1)RCC(复位和时钟设置)中未开启串口引脚时钟和串口时钟,即

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE)

 

(2)串口引脚未配置,即

 

void GPIO_Configuration(void)

{

  GPIO_InitTypeDef GPIO_InitStructure;

 

  /* Configure USART1 Tx (PA.09) as alternate function push-pull */

  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);

   

  /* Configure USART1 Rx (PA.10) as input floating */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

}

 

(3)串口配置不正确,如未使能串口等,建议参考官方例程。

(4)使用printf函数导致问题出现。标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.

例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:

#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD

Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE
{
 /* Place your implementation of fputc here */
 /* e.g. write a character to the USART */
 USART_SendData(USART1, (uint8_t) ch);
 /* Loop until the end of transmission */
 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
 return ch;
}

因printf()之类的函数,使用了半主机模式。使用标准库会导致程序无法运行,以下是解决方法:
方法1.使用微库图片,因为使用微库的话,不会使用半主机模式.

图片

 

方法2.仍然使用标准库,在主程序添加下面代码:


#pragma import(__use_no_semihosting) 
_sys_exit(int x) 

x = x; 

struct __FILE 

int handle; 
/* Whatever you require here. If the only file you are using is */ 
/* standard output using printf() for debugging, no file handling

*/ 
/* is required. */ 
}; 
/* FILE is typedef’ d in stdio.h. */ 
FILE __stdout;

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

meng_411698409 2012-12-18 15:04

暂时没有.

用户1675231 2012-12-17 09:38

你好,请问有bk1086 pic汇编参考程式吗?有的话请发于我下,感激不尽!

用户1557632 2011-6-19 19:10

自己遇到点问题,就查询了一下,顺便总结了一点体会,我的问题是最后一个,不过解决方法是DOWN的

用户1277994 2011-6-18 21:05

这个很重要,听说不少要遇到这个问题。楼主,这是你的原创吗?

相关推荐阅读
用户1557632 2011-06-18 12:30
美到极致是疯狂
  从 BlogJava-首页技术区 作者:张昊     一、什么是代码高手?你怎么证明自己是代码高手?  知道许多代码技巧、JS炫彩技巧的人大有人...
用户1557632 2011-06-18 12:27
[转]解决windows 7下校园网H3C iNode无法使用问题
      在学校用H3C iNode的兄弟们可以上网了 ...
EE直播间
更多
我要评论
2
12
关闭 站长推荐上一条 /3 下一条