OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4018|回复: 3

STM32F030R8 SYSTICK延时函数时间不对

[复制链接]

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2015-9-15 19:28:24 | 显示全部楼层 |阅读模式
5金钱
delay.c文件


#include <delay.h>
static unsigned char  fac_us=0;
static unsigned char  fac_ms=0;

void delay_init()
{
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);  //?????????±??  HCLK/8
    fac_us=SystemCoreClock/8000000;                                        //???????±????1/8        
    fac_ms=(unsigned int)fac_us*1000;
}

void delay_us(int nus)
{
    unsigned int temp;            
    SysTick->LOAD=nus*fac_us; //?±??????              
    SysTick->VAL=0x00;        //?????????÷
    SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //????????    
    do
    {
        temp=SysTick->CTRL;
    }
    while(temp&0x01&&!(temp&(1<<16)));//?????±??????   
    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //??±??????÷
    SysTick->VAL =0X00;       //?????????÷    
}

void delay_ms(int nms)
{
    unsigned int temp;           
    SysTick->LOAD=(unsigned int)nms*fac_ms;//?±??????(SysTick->LOAD??24bit)
    SysTick->VAL =0x00;           //?????????÷
    SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //????????  
    do
    {
        temp=SysTick->CTRL;
    }
    while(temp&0x01&&!(temp&(1<<16)));//?????±??????   
    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //??±??????÷
    SysTick->VAL =0X00;       //?????????÷    
}


main.c文件

#include <stm32f0xx.h>
#include <led.h>
#include <delay.h>

int main()
{    
    
    delay_init();
    LED_Init();
    while(1)
    {
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        delay_ms(1000);
        GPIO_ResetBits(GPIOA,GPIO_Pin_5);
        delay_ms(1000);
    }
}

然后板子上的LED闪的飞快.....
求大神帮我看看哪里出问题了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2015-9-15 19:55:58 | 显示全部楼层
SystemCoreClock
和HCLK是什么关系?
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1769
金钱
1769
注册时间
2015-6-11
在线时间
313 小时
发表于 2015-9-15 22:59:08 | 显示全部楼层
static unsigned char  fac_ms=0;
能够存的最大数是oxff,多余的部分丢弃了
把存储类型改成
static unsigned int  fac_ms=0;
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2015-9-20 13:52:53 | 显示全部楼层
回复【3楼】zc123:
---------------------------------
改了之后时间变长了...
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 21:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表