华秋商城
直播中

宫昊

7年用户 237经验值
私信 关注
[问答]

请问stm32f103c8t6硬件执行一句话要多长时间?

STM32f103c8t6硬件接的是8M晶振,想知道执行一句话用多长时间。时钟配置为:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |   
            RCC_APB2Periph_AFIO |  
            RCC_APB2Periph_USART1  
            ,ENABLE);  
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
其余没有对时钟进行配置。主要是想写一个us级的延时程序,不知道一句话用多长时间,所以没办法写。前辈们帮忙看一看,谢谢了。。。

回帖(5)

邢党铿

2019-9-17 09:27:17
STM32F103默认主频72M,FLASH有读等待周期,所以还是数systick比较靠谱。
举报

史岩超

2019-9-17 09:34:37
也想过用滴答,但是没接触过,不知道具体怎么配置,您有没有比较完整的配置程序啊?呵呵
举报

陆焙兆

2019-9-17 09:48:12
delay_init(u8 SYSCLK)
{
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);        //选择外部时钟  HCLK/8
        fac_us=SYSCLK/8;                    
        fac_ms=(u16)fac_us*1000;
}                                                                    
void delay_ms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
        SysTick->VAL =0x00;           //清空计数器
        SysTick->CTRL=0x01 ;          //开始倒数  
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
        SysTick->CTRL=0x00;       //关闭计数器
        SysTick->VAL =0X00;       //清空计数器                      
}                                                                                 
void delay_us(u32 nus)          
{               
        u32 temp;                     
        SysTick->LOAD=nus*fac_us; //时间加载                           
        SysTick->VAL=0x00;        //清空计数器
        SysTick->CTRL=0x01 ;      //开始倒数          
        do
        {
                temp=SysTick->CTRL;
        }
        while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
        SysTick->CTRL=0x00;       //关闭计数器
        SysTick->VAL =0X00;       //清空计数器         
}


希望能帮到楼主
举报

陈翔洁

2019-9-17 10:00:42
是汇编语言的一句话还是C语言的一句话?
C语言的一句话可能包含1000万次运算的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分