打印

STR710FZ2T6串口速率始终只有设定值的四分之一

[复制链接]
4179|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pcseye|  楼主 | 2007-10-11 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好!
我用的是一块,别人送我的STR7的核心板.外部晶振4MHz.
使用的环境是KEIL 的MDK3.51版本。

现在运行KEIL自带的 KEIL/ARM/BOARDS/HITEX/ST_HELLO 程序,发现实际的波特率只有设定的1/4...

到底是哪里错了呢,请老大们赐教。


以下是main程序。


#include "71x_lib.h"

#define UART0_Rx_Pin (0x0001<<8)   /*  TQFP 64: pin N?63 , TQFP 144 pin N?143 */
#define UART0_Tx_Pin (0x0001<<9)   /*  TQFP 64: pin N?64 , TQFP 144 pin N?144 */

#define UART1_Rx_Pin (0x0001<<10)  /*  TQFP 64: pin N?1  , TQFP 144 pin N?1   */
#define UART1_Tx_Pin (0x0001<<11)  /*  TQFP 64: pin N?2  , TQFP 144 pin N?3   */

#define UART2_Rx_Pin (0x0001<<13)  /*  TQFP 64: pin N?5  , TQFP 144 pin N?9   */
#define UART2_Tx_Pin (0x0001<<14)  /*  TQFP 64: pin N?6  , TQFP 144 pin N?10  */

#define UART3_Rx_Pin (0x0001<<1)   /*  TQFP 64: pin N?52 , TQFP 144 pin N?123 */
#define UART3_Tx_Pin (0x0001<<0)   /*  TQFP 64: pin N?53 , TQFP 144 pin N?124 */

#define Use_UART3
//#define Use_UART1
//#define Use_UART2
//#define Use_UART3

   #ifdef Use_UART0
     #define  UARTX  UART0
     #define  UARTX_Rx_Pin  UART0_Rx_Pin
     #define  UARTX_Tx_Pin  UART0_Tx_Pin
     #define  UARTX_Periph  UART0_Periph
   #endif /* Use_UART0 */

   #ifdef Use_UART1
     #define  UARTX  UART1
     #define  UARTX_Rx_Pin  UART1_Rx_Pin
     #define  UARTX_Tx_Pin  UART1_Tx_Pin
     #define  UARTX_Periph  UART1_Periph
   #endif /* Use_UART1 */

   #ifdef Use_UART2
     #define  UARTX  UART2
     #define  UARTX_Rx_Pin  UART2_Rx_Pin
     #define  UARTX_Tx_Pin  UART2_Tx_Pin
     #define  UARTX_Periph  UART2_Periph
   #endif /* Use_UART2 */

   #ifdef Use_UART3
     #define  UARTX  UART3
     #define  UARTX_Rx_Pin  UART3_Rx_Pin
     #define  UARTX_Tx_Pin  UART3_Tx_Pin
     #define  UARTX_Periph  UART3_Periph
   #endif /* Use_UART3 */


u16 i;
u16 UARTStatus;
u8 bBuffer[4] = {'t','e','s','t'};
/* Example 1 */
int main(void)
{
  #ifdef DEBUG
    debug();
  #endif

/* UART configuration ---------------------------------------------------------- */
   
    /*  Configure the GPIO pins as alternate function push pull */
   GPIO_Config(GPIO0,UARTX_Tx_Pin, GPIO_AF_PP);
    /*  Configure the GPIO pins as Input Tristate CMOS */
   GPIO_Config(GPIO0,UARTX_Rx_Pin, GPIO_IN_TRI_CMOS);

/*  Configure the UART X --------------------------------------------------------*/
    /*  Turn UARTX on */
   UART_OnOffConfig(UARTX, ENABLE);

    /*  Disable FIFOs */
   UART_FifoConfig (UARTX, DISABLE);

    /*  Reset the UART_RxFIFO */
   UART_FifoReset(UARTX, UART_RxFIFO);

    /*  Reset the UART_TxFIFO */
   UART_FifoReset(UARTX, UART_TxFIFO);

    /*  Disable Loop Back */
   UART_LoopBackConfig(UARTX, DISABLE);
  
    /* Configure the UARTX as following:
      - Baudrate = 9600 Bps
      - No parity
      - 8 data bits
      - 1 stop bit */
   UART_Config(UARTX, 9600, UART_NO_PARITY, UART_1_StopBits, UARTM_8D);
   
    /*  Enable Rx */
   UART_RxConfig(UARTX, ENABLE);

  while(1)
  {
   for(i=0; i<4; i++)
     UART_ByteSend(UARTX,(u8 *)&bBuffer);


   }
}
沙发
ST_ARM| | 2007-10-12 09:37 | 只看该作者

看看你的71x_conf.h文件

#ifndef __71x_CONF_H
#define __71x_CONF_H


/* Comment the line below to put the library in release mode */

#define RCCU_Main_Osc 0x16000000
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这里的0x16000000改为0x4000000了没有?

/* Comment the lines below corresponding to unwanted peripherals */
//#define _ADC12

//#define _APB
//#define _APB1
//#define _APB2

//#define _BSPI
//#define _BSPI0
//#define _BSPI1

//#define _CAN

//#define _EIC

//#define _EMI

//#define _FLASH

#define _GPIO
#define _GPIO0
#define _GPIO1
#define _GPIO2

#define _I2C
#define _I2C0
#define _I2C1

#define _PCU

#define _RCCU

//#define _RTC

//#define _TIM
//#define _TIM0
//#define _TIM1
//#define _TIM2
//#define _TIM3

//#define _UART
//#define _UART0
//#define _UART1
//#define _UART2
//#define _UART3

//#define _USB

//#define _WDG

//#define _XTI


//#define _IRQVectors


#endif /* __71x_CONF_H */

使用特权

评论回复
板凳
pcseye|  楼主 | 2007-10-12 11:41 | 只看该作者

确实没有设置为4000000

但,无论是改为0x4000000还是4000000,,,串口速率仍旧是1/4....困惑ING...谢谢各位老大

使用特权

评论回复
地板
浪淘沙| | 2007-10-12 12:10 | 只看该作者

建议:删除所有生成的中间文件,重新编译链接项目文件

使用特权

评论回复
5
pcseye|  楼主 | 2007-10-12 14:05 | 只看该作者

还是不行呢.

我重新从C盘的KEIL安装目录里,拷贝出了整个工程(之前我没有直接在这里修改源程序)

并且照前边两位说的,删除了所有中间文件。..但问题还是没解决啊.

还有,我在仿真里边,让程序 "RUN"起来之后,截到如下的图...

使用特权

评论回复
6
pcseye|  楼主 | 2007-10-12 15:27 | 只看该作者

这块板子之前有BOOT,通信都正常啊

这块板子,送给我的时候,是有BOOT的。通信都正常。

而且我用ADS编译的文件也正常跑起来了。


现在买了个ULINK,,,就把BOOT擦掉了。没想到串口不正常。...是什么原因呢

使用特权

评论回复
7
ST_ARM| | 2007-10-12 16:31 | 只看该作者

检测option

见图

使用特权

评论回复
8
pcseye|  楼主 | 2007-10-12 18:14 | 只看该作者

"4.0"MHz这个也是很早就设置好了

"4.0"MHz这个也是很早就设置好了...
也是不行的。


还有,稍微有点不放心的是,,,Device项里,,,没有选具体器件...

例程抓过来就用了。


老大们...谢谢..

到底是啥问题啊55555555555

使用特权

评论回复
9
pcseye|  楼主 | 2007-10-13 10:45 | 只看该作者

还是不行,第几个不眠夜拉

老大们,帮帮忙吧。。。

使用特权

评论回复
10
ST_ARM| | 2007-10-15 09:31 | 只看该作者

我不大会用KEIL 的MDK

因为没有license,我一直没法使用KEIL 的MDK,而且16k的版本不够用,所以一直没有去使用它。
你的问题仅凭你提供的信息可能没法解决,你能否将你的项目整个打包放上来?

使用特权

评论回复
11
qishi00| | 2007-10-15 21:11 | 只看该作者

应该是要在初始化的时候设置一下时钟

在初始化部分应该设置主频率的分频和倍频,

现在一般都是直接用库编程,而库缺省是用16M的频率,虽然改了源程序的主时钟频率,但是没有重新编译库的话,还是用16M的频率

使用特权

评论回复
12
pcseye|  楼主 | 2007-10-16 08:15 | 只看该作者

恩,谢谢

这两天在打杂,以上方法等我周末再试验。有结果给大家汇报。谢谢

使用特权

评论回复
13
pcseye|  楼主 | 2007-10-17 23:33 | 只看该作者

这会总算可以干点正事

11点刚把手上的杂活干完,可以整整正事了。..

发现,自己怎么折腾都不行.

还是把工程打包发上来吧~~~

各位老大,帮忙吧~

使用特权

评论回复
14
yjf1979yjf| | 2007-10-18 16:35 | 只看该作者

士大夫

士大夫

使用特权

评论回复
15
yjf1979yjf| | 2007-10-18 16:52 | 只看该作者

按时地方

广泛

使用特权

评论回复
16
pcseye|  楼主 | 2007-10-19 18:11 | 只看该作者

你以为驱动个串口那么重要么

我是在学ARM没错。
这个串口驱动不驱动起来,只是个过程。我并不重视结果的。
我的目标很明确,在这个探寻的过程中,可以逐步学会这个东西。串口不正常说明设置有问题。在这个基础上作再多也没意义。

而且这个是预研,不会有那么多精力投入的。

使用特权

评论回复
17
pcseye|  楼主 | 2007-10-19 18:13 | 只看该作者

而且我相信,有这个问题的不止我一个

而且我相信,有这个问题的不止我一个.


这些资料留在这里,还会对其他人有用的。还有,你的思维方式...

使用特权

评论回复
18
pcseye|  楼主 | 2007-10-22 23:51 | 只看该作者

依然无音信

依然无音信哦~~~~~~~~

使用特权

评论回复
19
ST_ARM| | 2007-10-23 09:54 | 只看该作者

你最好不要用Keil自带的库

最好使用产生那个库的源文件去开发。
问题还是这个造成的:
#define RCCU_Main_Osc 0x16000000
Keil编译好的库中使用了RCCU_Main_Osc,而这个值就是0x16000000,在外面改不了。除非你用的晶振是16M。

使用特权

评论回复
20
香水城| | 2007-10-23 21:04 | 只看该作者

19楼说的有道理,LZ的问题解决了吗?

使用特权

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

本版积分规则

6

主题

35

帖子

0

粉丝