[STM8] STM8S903K主频跑16M,怎么计算!

[复制链接]
1993|7
 楼主| win2000_li 发表于 2013-12-7 22:56 | 显示全部楼层 |阅读模式
void main(void)
{       
        OutIndicator.PrtLED = 0x1e;
        CLK_Config();
    GPIO_Config();
    enableInterrupts();   
    while (1)
    {
        PrtSt();
        PrtLEDAC ^= 1;
    }
}

我用STM8S903,用IO做高低输出,结果这个样子,并且用
clkF = CLK_GetClockFreq();
sysS = CLK_GetSYSCLKSource();
来查看时钟频率为16MHZ,时钟源为HSI,但是从波形上看不是这样的啊!
我哪里做错了??请各位指点一下!

* bbb.JPG
aaa.JPG
 楼主| win2000_li 发表于 2013-12-7 23:04 | 显示全部楼层
1/16MHz 不就是0.06us左右吗?
 楼主| win2000_li 发表于 2013-12-7 23:20 | 显示全部楼层
void gpio_init(void)
{
    PA_DDR = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6;
    PA_CR1 = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6;
    PA_CR2 = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6;
    PA_ODR = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6;

    PB_DDR = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PB_CR1 = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PB_CR2 = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PB_ODR = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;

    PC_DDR = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PC_CR1 = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PC_CR2 = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PC_ODR = 0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;

    PD_DDR = 0<<0|0<<1|0<<2|1<<3|1<<4|0<<5|0<<6|0<<7;
    PD_CR1 = 0<<0|0<<1|0<<2|1<<3|1<<4|0<<5|0<<6|0<<7;
    PD_CR2 = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;
    PD_ODR = 0<<0|0<<1|0<<2|0<<3|0<<4|0<<5|0<<6|0<<7;

    PE_DDR = 0<<0|0<<1|0<<2|0<<5|0<<6;
    PE_CR1 = 0<<0|0<<1|0<<2|0<<5|0<<6;
    PE_CR2 = 0<<0|0<<1|0<<2|0<<5|0<<6;
    PE_ODR = 0<<0|0<<1|0<<2|0<<5|0<<6;

    PF_DDR = 0<<4;
    PF_CR1 = 0<<4;
    PF_CR2 = 0<<4;
    PF_ODR = 0<<4;
}

void  Fosc_Init(void)
{
    CLK_CKDIVR_HSIDIV = 0;    //1分频
}

void  main(void)
{
    asm("sim");    //关总中断
    gpio_init();
    Fosc_Init();
    while(1)
    {
        PD_ODR_ODR4 ^= 1;
    }
}
 楼主| win2000_li 发表于 2013-12-7 23:24 | 显示全部楼层
 楼主| win2000_li 发表于 2013-12-7 23:26 | 显示全部楼层
用寄存器操作就变成了这个样子,但还不是16M,

汇编指今也只有一条啊?这是怎么一会事啊!???

等高人!
金融小数 发表于 2013-12-8 12:23 | 显示全部楼层
程序运行的速度是16MHz,不代表你的IO翻转能够实现16MHz的方波,理论上只能到8MHz。
 楼主| win2000_li 发表于 2013-12-8 21:57 | 显示全部楼层
我知道了,我的IO设置成这样的
dddd.JPG
 楼主| win2000_li 发表于 2013-12-8 21:59 | 显示全部楼层
但是为什么只有几十KHZ啊!!

而用寄存器直接操作,可以达到2M多啊!!差别太大些吧!!

如果才能用库达到2MHZ呢??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

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