380091044 发表于 2024-7-4 08:28:04

Free RTOS中如何实现下面这样的1ms定时中断及初始化?



Free RTOS中如何实现下面这样的1ms定时中断及初始化?

没有见过类似DEMO,请师友们指点。



void Timer1Init(void)                //1毫秒@11.0592MHz
{
        AUXR |= 0x40;//定时器时钟1T模式
        TMOD &= 0x0F;//设置定时器1模式:
        TL1 = 0xCD;//设置定时初值低8位
        TH1 = 0xD4;//设置定时初值高8位
        TF1 = 0;
        TR1 = 1;
        ET1 = 1;
        EA=1;
}




void Time1_isr() interrupt 3 using 1
{       
        Key_scan();       

}









hsrzq 发表于 2024-7-4 12:12:13

本帖最后由 hsrzq 于 2024-7-4 12:14 编辑

FreeRTOSConfig.h

#define configCPU_CLOCK_HZ            ((uint32_t)11059200)
#define configTICK_RATE_HZ            ((TickType_t)1000)
#define INCLUDE_vTaskDelay            1
main.c
static portTASK_FUNCTION(vKeyScanTask, pvParameters)
{
    pvParameters;
    while (1) {
      Key_scan();
      vTaskDelay(1);
    }
}

380091044 发表于 2024-7-4 13:32:03

hsrzq 发表于 2024-7-4 12:12
FreeRTOSConfig.h




这就不用定时器,也就实现了,感谢指点,我还想着如何用定时器1来实现的,初始化放哪都提示错误,我来试试看,

hsrzq 发表于 2024-7-4 14:58:52

380091044 发表于 2024-7-4 13:32
这就不用定时器,也就实现了,感谢指点,我还想着如何用定时器1来实现的,初始化放哪都提示错误,我来试 ...

对呀,都已经用上实时系统了,直接用系统的时间片就行。
别说简单的键盘扫描了,一般的PLC执行间隔都足够了~~

380091044 发表于 2024-7-4 15:07:14

hsrzq 发表于 2024-7-4 14:58
对呀,都已经用上实时系统了,直接用系统的时间片就行。
别说简单的键盘扫描了,一般的PLC执行间隔都足够 ...

感谢大咖指点,别人都是开大奔就已经很牛了,你这直接开飞机!牛牛

380091044 发表于 2024-7-5 16:53:09

hsrzq 发表于 2024-7-4 14:58
对呀,都已经用上实时系统了,直接用系统的时间片就行。
别说简单的键盘扫描了,一般的PLC执行间隔都足够 ...

代码功能基本都实现了,还有一个小细节,得自己好好研究一下,再次,感谢老师指点。

hsrzq 发表于 2024-7-5 22:56:23

380091044 发表于 2024-7-5 16:53
代码功能基本都实现了,还有一个小细节,得自己好好研究一下,再次,感谢老师指点。 ...

妈呀,我就是一外行,可不敢叫老师……
页: [1]
查看完整版本: Free RTOS中如何实现下面这样的1ms定时中断及初始化?