STM32/STM8技术论坛
直播中

wobomb

13年用户 10经验值
私信 关注
[问答]

问个systick的问题

本来想试试弄个秒计时的
Systick_CounterCmd(SysTick_Counter_Disable);
SysTick_ITConfig(DISABLE);
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
SysTick_SetReload(9000*1000);
SysTick_CounterCmd(SysTick_Counter_Enable);
FlagStatus Status;
Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT);
结果这个Status要好久才置位1一次


然后试了好久发现
这么设置SysTick_SetReload(9000*150);大概是一秒置位一次
怎么回事,实在不明白。LOAD设为9000*1000,那Systick时钟9MHZ,不就是1秒减完吗?怎么不对?

回帖(5)

wobomb

2014-7-25 11:21:23
人工置顶,求指教
举报

liaoyunshui

2014-7-25 15:32:54
你的外部晶振是不是用的8MHz的,这样系统时钟才是72MHz,systick为72/8=9M
举报

wobomb

2014-7-25 16:13:05
引用: liaoyunshui 发表于 2014-7-25 15:32
你的外部晶振是不是用的8MHz的,这样系统时钟才是72MHz,systick为72/8=9M

我是用keil软件仿真的不知道有没有问题

void RCC_Configuration(void)
{
        //----------使用外部RC晶振-----------
        RCC_DeInit();                        //初始化为缺省值
        RCC_HSEConfig(RCC_HSE_ON);        //使能外部的高速时钟
        while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);        //等待外部高速时钟使能就绪
       
//        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);        //Enable Prefetch Buffer
//        FLASH_SetLatency(FLASH_Latency_2);                //Flash 2 wait state
       
        RCC_HCLKConfig(RCC_SYSCLK_Div1);                //HCLK = SYSCLK
        RCC_PCLK2Config(RCC_HCLK_Div1);                        //PCLK2 =  HCLK
        RCC_PCLK1Config(RCC_HCLK_Div2);                        //PCLK1 = HCLK/2
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);        //PLLCLK = 8MHZ * 9 =72MHZ
        RCC_PLLCmd(ENABLE);                        //Enable PLLCLK

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);        //Wait till PLLCLK is ready
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);        //Select PLL as system clock
        while(RCC_GetSYSCLKSource()!=0x08);                //Wait till PLL is used as system clock source


举报

liaoyunshui

2014-7-25 16:27:22
引用: wobomb 发表于 2014-7-25 16:13
我是用keil软件仿真的不知道有没有问题

void RCC_Configuration(void)

你在simulater中配置一下参数就可以了,外部晶振选择8M就ok
举报

wobomb

2014-7-26 11:02:01
引用: liaoyunshui 发表于 2014-7-25 16:27
你在simulater中配置一下参数就可以了,外部晶振选择8M就ok

QQ截图20140726105939.png
是这样吗?
仿真的时候感觉不对
QQ截图20140726110104.png

举报

更多回帖

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