shenxiaolin 发表于 2019-11-14 11:14

关于定时器的问题请教

最近在使用华大的130系列单片机,有一个关于定时器的问题想要请教;官方给的代码是这样的,int32_t main(void)
{
    uint16_t                  u16ArrValue;
    uint16_t                  u16CntValue;
    stc_tim3_mode0_config_t   stcTim3BaseCfg;
    stc_gpio_config_t         stcLEDPortCfg;
   
    DDL_ZERO_STRUCT(stcTim3BaseCfg);
    DDL_ZERO_STRUCT(stcLEDPortCfg);
   
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //GPIO 外设时钟使能
    Sysctrl_SetPeripheralGate(SysctrlPeripheralTim3, TRUE); //Base Timer外设时钟使能
   
    //PD05设置为LED 控制引脚
    //Gpio_ClrAnalogMode(GpioPortD, GpioPin5);
    stcLEDPortCfg.enDir= GpioDirOut;
    Gpio_Init(GpioPortD, GpioPin5, &stcLEDPortCfg);
   
    stcTim3BaseCfg.enWorkMode = Tim3WorkMode0;            //定时器模式
    stcTim3BaseCfg.enCT       = Tim3Timer;                  //定时器功能,计数时钟为内部PCLK
    stcTim3BaseCfg.enPRS      = Tim3PCLKDiv64;            //PCLK/64
    stcTim3BaseCfg.enCntMode= Tim316bitArrMode;         //自动重载16位计数器/定时器
    stcTim3BaseCfg.bEnTog   = FALSE;
    stcTim3BaseCfg.bEnGate    = FALSE;
    stcTim3BaseCfg.enGateP    = Tim3GatePositive;
   
    stcTim3BaseCfg.pfnTim3Cb= Tim3Int;                  //中断函数入口
   
    Tim3_Mode0_Init(&stcTim3BaseCfg);                     //TIM3 的模式0功能初始化
   
    Tim3_ClearIntFlag(Tim3UevIrq);                        //清中断标志
   
    EnableNvic(TIM3_IRQn, IrqLevel3, TRUE);               //TIM3 开中断
   
    Tim3_Mode0_EnableIrq();                                 //使能TIM3中断(模式0时只有一个中断)
   
    u16ArrValue = 0xA000;
   
    Tim3_M0_ARRSet(u16ArrValue);                            //设置重载值
   
    u16CntValue = 0xA000;
   
    Tim3_M0_Cnt16Set(u16CntValue);                        //设置计数初值
   
    Tim3_M0_Run();                                          //TIM3 运行。
   
    while (1);
}我想请问,这个计数值和重载值分别代表说明含义,如果我想设置定时器为1ms的中断应该如歌设置呢?现在单片机的时钟为4M。

2355898179@q 发表于 2019-11-14 15:02

华大一级代理&技术支持Q765812964

中子家 发表于 2019-11-14 15:45

计数值就是计数器数多少次产生一次中断,重载值是用于连续计数的,使用重载的方式可以不需要每次产生中断后去写计数值。每款MCU的手册都都会详细描写这一部分,你仔细看看用户手册吧

martinhu 发表于 2019-11-14 21:10

这个是通用定时器的模式0,在模式0里面,当定时器启动的时候,会从计数初值向上计数,一直到16bit 计数器溢出,然后计时器重载ARR的值,再次向上计数

buffered 发表于 2019-11-17 18:30

很多芯片的定时器配置都是类似的,再详细看一下手册吧

wiba 发表于 2019-12-4 10:09

可以自己换数试试看 就知道了

zljiu 发表于 2019-12-4 10:25

看不出来什么问题啊

coshi 发表于 2019-12-4 10:52

我也没注意过
页: [1]
查看完整版本: 关于定时器的问题请教