打印
[STM8]

STM8S207跑24MHz不行,CPU只能2分频?why

[复制链接]
5237|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
//使用外部晶振24MHz,1分频跑不起来,2分频才可以正常工作,不知道哪设置问题
void Clk_Config(void)
{
    ErrorStatus val;
    CLK_DeInit();
    //CLK_HSECmd(ENABLE);
    //CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//使用这个CPU不工作,why??
    //CLK_SWIMConfig(CLK_SWIMDIVIDER_2);
    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2);        // 这个可以正常工作
    val= CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
   
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART3, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER3, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, ENABLE);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE);
    /*时钟转换同时开启安全,防止外部时钟出错(实际无太大的作用)*/
    //CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE,DISABLE, DISABLE);
    //CLK_ClockSwitchCmd(ENABLE);
   
    //CLK_ITConfig(CLK_IT_CSSD, ENABLE);        /*Enable CSS interrupt */
    //CLK_ClockSecuritySystemEnable();

}
沙发
香水城| | 2010-1-26 08:40 | 只看该作者
哈哈,典型的不看手册~~~~~

STM8S_20xxx_Datasheet_1st_Page.GIF (25.07 KB )

STM8S_20xxx_Datasheet_1st_Page.GIF

使用特权

评论回复
板凳
lizhenyang7477| | 2010-1-26 09:32 | 只看该作者
好像CPU时钟大于16Mhz时要插入一个什么延时选项,具体在那里设置就忘了

使用特权

评论回复
地板
lizhenyang7477| | 2010-1-26 09:55 | 只看该作者
不知道是不是这里

Snap2.gif (11.52 KB )

Snap2.gif

使用特权

评论回复
5
笑苍天| | 2010-1-26 10:43 | 只看该作者
有这个非0等待的24M好过没有。

使用特权

评论回复
6
有意思|  楼主 | 2010-1-26 21:17 | 只看该作者
2# 香水城
下面是例程函数

void main(void)
{
    ErrorStatus status = FALSE;

    /* Initialization of I/O in Input Mode with Interrupt */
    GPIO_Init(BUTTON_PORT, BUTTON_PIN, GPIO_MODE_IN_FL_IT);

    /* Initialization of the Interrupt sensitivity */
    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);

    /* Enable general interrupts */
    enableInterrupts();

    CLK_DeInit();

    /* Configure the Fcpu to DIV1*/
    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
               
                /* Configure the HSI prescaler to the optimal value */
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);

    /* Output Fcpu on CLK_CCO pin */
    CLK_CCOConfig(CLK_OUTPUT_CPU);
                               
    /* Initilize the CLock controller according to CLK_InitStructure */
    status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, DISABLE);
               
    while (ButtonPressed == FALSE);
               
    status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, DISABLE);
               
    while (1);

}
哪里有问题,下面是readme的
/** @page CLK_MaxSpeed Configuring clocks for maximum speed


  @par Example description

  This example provides two optimal clock configurations
  - Fcpu running at 24Mhz (HSE)
  - Fcpu running at 16Mhz (HSI)

那个什么等待不是操场flash时用的吗?现在还没到那步啊




}

使用特权

评论回复
7
有意思|  楼主 | 2010-1-26 21:20 | 只看该作者
2# 香水城
手册,那ST的手册写的看的头晕,翻译的中文头更晕
Fcpu最高24MHz,当《16MHz时访问存储器0等待,和我问的有联系吗

使用特权

评论回复
8
有意思|  楼主 | 2010-1-26 21:22 | 只看该作者
在ST MCU上问的问题,到目前为止,没有一个有满意的答复,
哎,

使用特权

评论回复
9
香水城| | 2010-1-27 08:53 | 只看该作者
2# 香水城  
手册,那ST的手册写的看的头晕,翻译的中文头更晕
Fcpu最高24MHz,当《16MHz时访问存储器0等待,和我问的有联系吗
有意思 发表于 2010-1-26 21:20


联系非常密切:当CPU频率小于等于16MHz时,访问存储器是0等待,CPU频率大于16MHz时则不能再设置为0等待,按照4楼指示的,应该设置1个等待周期。

估计你没有这个概念,所以看的头晕;不用着急,学习的过程是循序渐进的,不可能一蹴而就。

使用特权

评论回复
10
aozima| | 2010-1-27 09:25 | 只看该作者
本帖最后由 aozima 于 2010-1-27 09:26 编辑

说简单点就是只说优点,不说缺点.
古今中外各家都一个德行.

"小于16MHz时访问存储器0等待"
就是说,不小于16M时,就不能0等待.
但就是不明说,这样看起来更NB,真发现问题,人家也没有说错....

除了浪费用户的时间以外没别的用处.

以后看数据资料要请个律师类的人来看.估计一眼就能看到"言外之意"

使用特权

评论回复
11
香水城| | 2010-1-27 10:06 | 只看该作者
说简单点就是只说优点,不说缺点.
古今中外各家都一个德行.

"小于16MHz时访问存储器0等待"
就是说,不小于16M时,就不能0等待.
但就是不明说,这样看起来更NB,真发现问题,人家也没有说错....

除了浪费用户的时间以外没别的用处.

以后看数据资料要请个律师类的人来看.估计一眼就能看到"言外之意" ...
aozima 发表于 2010-1-27 09:25


哈哈,楼上这话是不是有些苛求了?

非此即彼,简单推理可以得到的信息,有必要这么啰嗦吗?

你写程序时,如果要判断a > b,是否要写:
    if (a > b && b < a)

使用特权

评论回复
12
aozima| | 2010-1-27 11:09 | 只看该作者
本帖最后由 aozima 于 2010-1-27 11:10 编辑

楼上理解错了吧,

应该是
if (a<b )
if ( !(a >= b) ) 
来比


想表达的意思,就是不愿意说,A(我自己)小于B,然后用,我没有比别人大来代替

使用特权

评论回复
13
香水城| | 2010-1-27 11:33 | 只看该作者
我怎么看不太懂:12楼是想讨论技术问题呢?还是想讨论哲学问题?

使用特权

评论回复
14
有意思|  楼主 | 2010-1-27 21:56 | 只看该作者
强烈支持12楼,手册里直接说明,CPU要是想跑≥16MHz,在STVD连接目标板的情况下,
在....菜单里设置选项字节,

更郁闷的是,tools菜单下面的program里也可以设选项字节,但是debug就是不行,都准备去吊FAE说
忽悠寡人了,结果却说要连接目标板下,在debug菜单里设,

浪费大家时间,这帮人是不是以为开发周期可以无限长啊!!!

非让客户在那瞎折腾,到最后还打电话给FAE,这么简单的问题,搞的自己颜面扫地

使用特权

评论回复
15
无冕之王| | 2010-1-28 09:42 | 只看该作者
再仔细看看手册吧

使用特权

评论回复
16
e8098| | 2010-1-29 08:15 | 只看该作者
其实,还有个问题就是现在的理科生阅读能力下降了。当然阅读外文的能力可能提升了

使用特权

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

本版积分规则

79

主题

331

帖子

0

粉丝