6013|8

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm8s的cpu不能工作到24MHz吗? [复制链接]

测试程序如下:

#include "stm8s.h"

void CLK_Init(void)
{
    /* Configure clock prescaler */
    CLK->CKDIVR = 0x01;          /* To be programmed with different value */
                                 /* Fmaster, Fmaster/1, ...               */
    /* To select external source by automtic switch */
    CLK->SWCR |= 0x02;            /* Enable switch */
    CLK->SWR   = 0xB4;            /* Select HSE */
        
    while (!(CLK->SWCR & 0x08));  /* Wait for switch done */
        
        /* verify the external clock is selected (optional) */
    if (CLK->CMSR != 0xB4)        
            while(1);
    
    CLK->CSSR |= 0x01; 
}
/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
#define LEDS_PORT (GPIOD)
#define LED1_PIN  (GPIO_PIN_0)
#define LED2_PIN  (GPIO_PIN_2)
#define LED3_PIN    (GPIO_PIN_3)

void Delay(u16 nCount)
{
  /* Decrement nCount value */
  while (nCount != 0)
  {
    nCount--;
  }
}

int main(void)
{
  u8 Leds = LED1_PIN|LED2_PIN|LED3_PIN; /* Contains which LEDs to operate */

    u8 t = 10;
    /* Initialize I/Os in Output Mode */
  GPIO_Init(LEDS_PORT, (LED1_PIN | LED2_PIN | LED3_PIN ), GPIO_MODE_OUT_PP_LOW_FAST);
    
// 这里是用启动后默认的16MHz(HSI)/8=2MHz时钟工作
    while (t--)
  {
    /* LEDs ON */
    GPIO_WriteHigh(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
    /* LEDs OFF */
    GPIO_WriteLow(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
  }

    CLK_Init();
    t=10;
// 切换到HSE 24MHz晶振,FCPU=FMASTER/2,正常工作,LED闪烁变快了
    while (t--)
  {
    /* LEDs ON */
    GPIO_WriteHigh(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
    /* LEDs OFF */
    GPIO_WriteLow(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
  }

    CLK->CKDIVR = 0X00;
// 切换到FCPU=FMASTER/1 24MHz,不工作,看上去是很快系统复位了。
  while (1)
  {
    /* LEDs ON */
    GPIO_WriteHigh(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
    /* LEDs OFF */
    GPIO_WriteLow(LEDS_PORT, Leds);
    Delay((u16)60000);
    Delay((u16)60000);
  }

}

实验板是STM8 MINI KIT
此帖出自stm32/stm8论坛

最新回复

                                 应该在前面部分   详情 回复 发表于 2009-5-19 21:14
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

用16MHz的外部晶振就可以看到3个阶段的LED闪烁越来越快

                                  
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

option byte中wait state要等于1

                                 STM8的flash标称最高速度是16M,主频跑24M时,在FLASH中运行程序需要插1个等待周期
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 

STM8flash标称16M是在那个文件中提到的?怎么插1个等待周期?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 

datasheet 里有的

STM8S207的datasheet 
第一页:
Max fCPU: up to 24 MHz,
0 wait states @ fCPU≤16 MHz

第六章option bytes:
OPT7
WAITSTATE Wait state configuration
This option configures the number of wait states inserted when reading
from the Flash/data EEPROM memory.
1 wait state is required if fCPU > 16 MHz.
0: No wait state
1: 1 wait state

要烧option bytes,可以用STVP(STVD伴侣,你肯定安装了)
https://bbs.eeworld.com.cn/upfiles/img/20095/200951915846233.jpg
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 

谢谢汉之云,问题解决了。

在读Flash中插入1个等待周期后,即便将CPU的工作频率提高到24MHz,获取指令的速度反而低于16MHz的主频;另一方面,FLASH数据总线的宽度是32位,一次获取4个字节,那么将cpu工作频率提高到24Mhz有可能提高性能吗?



此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 

有的

STM8三级流水线,外带3个buffer,在顺序执行时一般不会有流水线STALL情况,但如果非常频繁地跳转和中断,流水线和buffer经常清空和就不一定了.

STM8的官方培训资料上有几个图,专门说这一点的.哪位兄弟有,给贴个图?

此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 

官方培训资料那里有下载?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 

嗯,看上去挺像的

                                 应该在前面部分
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表