打印
[应用相关]

出大问题了!

[复制链接]
1384|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2014-2-19 08:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yzzly 于 2014-2-19 08:25 编辑

昨天调试新的STM32F103系统,发现串口出现了波特率不对的问题。然后用老的工程直接(不重新编译)下载,结果波特率是正确的;如果把老工程重新编译后下载,串口波特率就不对了,目标波特率是9600,而实际只有7200。公司电脑上是这样,家里的电脑上也是这样,不知道怎么会出现这样莫名其妙的大问题,是编译器(MDK)到期了吗?有没有哪位朋友碰到过?
沙发
杨爱林林| | 2014-2-19 09:16 | 只看该作者
不麻烦的话 换成iar试试

使用特权

评论回复
板凳
dirtwillfly| | 2014-2-19 09:19 | 只看该作者
建议楼主把代码和开环环境的配置好好看看

使用特权

评论回复
地板
baishuiyang| | 2014-2-19 09:25 | 只看该作者
分频设的不对吧

使用特权

评论回复
5
yzzly|  楼主 | 2014-2-19 09:40 | 只看该作者
本帖最后由 yzzly 于 2014-2-19 12:11 编辑

本人用STM32和MDK已经5年以上了,基本的东西还是知道的,产品也在不断的量产。

使用特权

评论回复
6
yzzly|  楼主 | 2014-2-19 12:14 | 只看该作者
MDK重装后,一个工程好了;其它工程还是不行!串口初始化都是一样的程序,用的是库函数语句后续工程都是拷贝的老工程。
        USART_InitStructure.USART_BaudRate = UART3_BaudRate;
        USART_InitStructure.USART_WordLength = (UART3_WordLen/9) << 12;
        USART_InitStructure.USART_Parity = UART3_PCE << 10;
        USART_InitStructure.USART_Parity |= UART3_PS << 9;
        USART_InitStructure.USART_StopBits = UART3_StopBit << 12;

        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_HardwareFlowControl |= UART3_RTSE<<8;
        USART_InitStructure.USART_HardwareFlowControl |= UART3_CTSE<<9;
        USART_InitStructure.USART_HardwareFlowControl |= UART3_CTSIE<<10;
        USART_InitStructure.USART_Mode = (UART3_RxEn<<2) | (UART3_TxEn<<3);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);                                                        //使能USART3时钟
        USART_Init(USART3, &USART_InitStructure);

使用特权

评论回复
7
airwill| | 2014-2-19 21:27 | 只看该作者
是不是库版本不同了, 里面的定义不同了.
我查了一下以前的程序.

楼主的代码是: USART_InitStructure.USART_WordLength = (UART3_WordLen/9) << 12;
我的代码是:   USART_InitStructure.USART_WordLength = USART_WordLength_8b;

使用特权

评论回复
8
IJK| | 2014-2-20 09:34 | 只看该作者
其实,这个问题好查。就是调试时,对串口进行初始化后,看串口的波特率寄存器的值跟预期的是否相符。当然,调试时最好多看些相关的寄存器,比如PCLK的分频系数,虽然从症状来看相关性不大。

使用特权

评论回复
9
jlwg| | 2014-2-20 12:05 | 只看该作者
标题党,我还以为彗星撞地球了呐

使用特权

评论回复
10
拿起书本| | 2014-2-20 14:50 | 只看该作者
建议组织个代码测试项目,大家在各自的平台上跑跑看如何?!

使用特权

评论回复
11
shaobing1231| | 2014-2-20 15:01 | 只看该作者
建议楼主还是多多尝试一下 看看 发出来的波特率是多少。然后再做推测。
如果 倍频了,那就看看那里的设置不对,另外看看系统的systemclock那个变量 对不对。也许只是这个变量不对了。也可能变异的时候define的CLK 设置错了,比如,你用的是 12M的外部晶振,这就需要你在库文件里设置。总之能影响到的地方挺多的。

使用特权

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

本版积分规则

427

主题

1178

帖子

3

粉丝