发新帖我要提问
12
返回列表
打印
[STM32F1]

stm32 串口数据发送错误

[复制链接]
楼主: zoyee.l
手机看帖
扫描二维码
随时随地手机跟帖
21
dawei360| | 2014-3-12 22:18 | 只看该作者 回帖奖励 |倒序浏览
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC,ENABLE);
改成 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ,ENABLE);

int fputc(int ch, FILE *f)                        //重定向输出函数
{
        USART_SendData(USART2, (uint16_t)ch);
        while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
        return (ch);
}


int fgetc(FILE *f)
{
               
                while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET);

                return (int)USART_ReceiveData(USART2);
}

void UartTest()
{
        printf("\rhelloworld\n");
}
包含#include "stdio.h" 试试

使用特权

评论回复
22
Ketose| | 2014-3-12 22:24 | 只看该作者
给楼主个建议,把单片机的TX和RX接在一起,然后发送个字符看单片机收到是不是变化了!

使用特权

评论回复
23
momingwei| | 2014-3-13 10:22 | 只看该作者
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC,ENABLE);这个AFIO应该不用吧,另外在串口助手上用HEX接收,就是HEX显示。

使用特权

评论回复
24
jusun66| | 2014-3-13 12:01 | 只看该作者
在线调试,使用示波器看一下数据波形就一目了然了。怀疑是系统时钟设置的问题,导致波特率不对。

使用特权

评论回复
25
zoyee.l|  楼主 | 2014-3-15 11:48 | 只看该作者
dawei360 发表于 2014-3-12 22:18
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC,ENABLE);
...

还是不行,令我奇怪的是,我的是IAR 6.4版本,但我把程序贴到同学5.4版本下可以运行,而且发送数据无错误,两者只是建立工程和头文件不一样,说明这程序没有错误。

使用特权

评论回复
26
dawei360| | 2014-3-15 14:13 | 只看该作者
哈哈,那就不知道了

使用特权

评论回复
27
judejie83| | 2014-3-15 19:54 | 只看该作者

使用特权

评论回复
28
ninicaoyuan| | 2016-6-7 16:25 | 只看该作者
我的是主频太高。。。。。。。。。。。。。。。

使用特权

评论回复
29
victor1934| | 2016-6-7 20:24 | 只看该作者
串口助手上的波特率设置,数据位,奇偶校验等等。
再有就是你只是说了一个字节的情况,多发送字节看看是不是有一定的规律,比如数据少发或多发了几个bit等等。

使用特权

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

本版积分规则