打印
[STM8]

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

[复制链接]
1770|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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,但是从波形上看不是这样的啊!
我哪里做错了??请各位指点一下!

*

aaa.JPG (21.48 KB )

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 | 只看该作者

使用特权

评论回复
5
win2000_li|  楼主 | 2013-12-7 23:26 | 只看该作者
用寄存器操作就变成了这个样子,但还不是16M,

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

等高人!

使用特权

评论回复
6
金融小数| | 2013-12-8 12:23 | 只看该作者
程序运行的速度是16MHz,不代表你的IO翻转能够实现16MHz的方波,理论上只能到8MHz。

使用特权

评论回复
7
win2000_li|  楼主 | 2013-12-8 21:57 | 只看该作者
我知道了,我的IO设置成这样的

dddd.JPG (21.48 KB )

dddd.JPG

使用特权

评论回复
8
win2000_li|  楼主 | 2013-12-8 21:59 | 只看该作者
但是为什么只有几十KHZ啊!!

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

如果才能用库达到2MHZ呢??

使用特权

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

本版积分规则

142

主题

718

帖子

1

粉丝