[STM32F1] stm32 串口数据发送错误

[复制链接]
7471|28
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" 试试
Ketose 发表于 2014-3-12 22:24 | 显示全部楼层
给楼主个建议,把单片机的TX和RX接在一起,然后发送个字符看单片机收到是不是变化了!
momingwei 发表于 2014-3-13 10:22 | 显示全部楼层
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOC,ENABLE);这个AFIO应该不用吧,另外在串口助手上用HEX接收,就是HEX显示。
jusun66 发表于 2014-3-13 12:01 | 显示全部楼层
在线调试,使用示波器看一下数据波形就一目了然了。怀疑是系统时钟设置的问题,导致波特率不对。
 楼主| 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版本下可以运行,而且发送数据无错误,两者只是建立工程和头文件不一样,说明这程序没有错误。
dawei360 发表于 2014-3-15 14:13 | 显示全部楼层
哈哈,那就不知道了
judejie83 发表于 2014-3-15 19:54 | 显示全部楼层
ninicaoyuan 发表于 2016-6-7 16:25 | 显示全部楼层
我的是主频太高。。。。。。。。。。。。。。。
victor1934 发表于 2016-6-7 20:24 | 显示全部楼层
串口助手上的波特率设置,数据位,奇偶校验等等。
再有就是你只是说了一个字节的情况,多发送字节看看是不是有一定的规律,比如数据少发或多发了几个bit等等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部