硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4255|回复: 3
收起左侧

[FreeRTOS] freertos系统滴答定时器的问题

[复制链接]

62

主题

77

回帖

263

积分

高级会员

积分
263
发表于 2015-11-18 15:01:35 | 显示全部楼层 |阅读模式
*
例程代码里面调用
vPortSetupTimerInterrupt()初始化系统滴答时钟。
但是代码里面又有如下函数bsp_intitimer函数对SysTick_Config()系统时钟初始化。

这如果都用起来不是冲突了?

其实不是只用vPortSetupTimerInterrupt...的初始化函数就可以?然后如果要精确延时可以调用bsp_DelayUS()函数?

********************************************************************************************************
*/
void bsp_InitTimer(void)
{
    uint8_t i;

    /* 清零所有的软件定时器 */
    for (i = 0; i < TMR_COUNT; i++)
    {
        s_tTmr.Count = 0;
        s_tTmr.PreLoad = 0;
        s_tTmr.Flag = 0;
        s_tTmr.Mode = TMR_ONCE_MODE;    /* 缺省是1次性工作模式 */
    }

    /*
        配置systic中断周期为1ms,并启动systick中断。

        SystemCoreClock 是固件中定义的系统内核时钟,对于STM32F4XX,一般为 168MHz

        SysTick_Config() 函数的形参表示内核时钟多少个周期后触发一次Systick定时中断.
            -- SystemCoreClock / 1000  表示定时频率为 1000Hz, 也就是定时周期为  1ms
            -- SystemCoreClock / 500   表示定时频率为 500Hz,  也就是定时周期为  2ms
            -- SystemCoreClock / 2000  表示定时频率为 2000Hz, 也就是定时周期为  500us

        对于常规的应用,我们一般取定时周期1ms。对于低速CPU或者低功耗应用,可以设置定时周期为 10ms
    */
    SysTick_Config(SystemCoreClock / 1000);
   
#if defined (USE_TIM2) || defined (USE_TIM3)  || defined (USE_TIM4)    || defined (USE_TIM5)
    bsp_InitHardTimer();
#endif
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2015-11-19 00:36:13 | 显示全部楼层
只能用一个。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2015-11-19 00:37:13 | 显示全部楼层
不过是调用我们写的函数初始化滴答定时器还是使用FreeRTOS初始化,都可以调用函数bsp_DelayUS()
回复

使用道具 举报

62

主题

77

回帖

263

积分

高级会员

积分
263
 楼主| 发表于 2015-11-19 11:13:08 | 显示全部楼层

回 eric2013 的帖子

eric2013:不过是调用我们写的函数初始化滴答定时器还是使用FreeRTOS初始化,都可以调用函数bsp_DelayUS() (2015-11-19 00:37) 
嗯l.多额谢。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 15:17 , Processed in 0.186521 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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